Skip to main content

Runtime type checking decorators for function arguments

Project description

philiprehberger-type-guard

Tests PyPI version License

Runtime type checking decorators for function arguments.

Installation

pip install philiprehberger-type-guard

Usage

Basic Usage

from philiprehberger_type_guard import guard

@guard
def greet(name: str, times: int = 1) -> str:
    return name * times

greet("hello", 3)     # Works fine
greet(123, 3)          # Raises TypeGuardError

Generic Types

@guard
def process(items: list[int], lookup: dict[str, float]):
    ...

process([1, 2, 3], {"a": 1.0})  # OK
process(["a"], {})               # TypeGuardError

Union Types

@guard
def flexible(value: int | str | None):
    ...

flexible(42)     # OK
flexible("hi")   # OK
flexible(None)   # OK
flexible(3.14)   # TypeGuardError

Global Toggle

from philiprehberger_type_guard import enable, disable

disable()  # Turn off all guards (e.g., in production)
enable()   # Turn back on

Error Details

from philiprehberger_type_guard import TypeGuardError

try:
    greet(123, 3)
except TypeGuardError as e:
    print(e.param)     # "name"
    print(e.expected)  # "str"
    print(e.actual)    # <class 'int'>
    print(e.value)     # 123

API

Function / Class Description
@guard / @guard(enabled=True) Decorator for runtime type checking
enable() / disable() Global toggle
TypeGuardError Raised on type mismatch (subclass of TypeError)

Development

pip install -e .
python -m pytest tests/ -v

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

philiprehberger_type_guard-0.1.6.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

philiprehberger_type_guard-0.1.6-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file philiprehberger_type_guard-0.1.6.tar.gz.

File metadata

File hashes

Hashes for philiprehberger_type_guard-0.1.6.tar.gz
Algorithm Hash digest
SHA256 34b19c7903a25ecb3ab74fe1fdcccadf0813c543846d529219fa8b1f3a9b6a2e
MD5 54ade67bc476f714a657127db73b8d8a
BLAKE2b-256 d934dc1f5508b1fb0f66672b4962ef20a463df9a8411bb7510c22441ec10d9c5

See more details on using hashes here.

File details

Details for the file philiprehberger_type_guard-0.1.6-py3-none-any.whl.

File metadata

File hashes

Hashes for philiprehberger_type_guard-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 0bcb72d863f9025573d9a3a803dbf5410a07fa5ea5a5c4957b366471c915a2c5
MD5 9bf68b5361405650af21c555e42a9d55
BLAKE2b-256 d910233ca7c34bda330cea24eaf8a666ff06430757aea2790c0014fa8886bf3a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page