Skip to main content

Runtime type checking decorators for function arguments

Project description

philiprehberger-type-guard

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

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

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.0.tar.gz (3.9 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.0-py3-none-any.whl (4.4 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_type_guard-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4f6f879d46a90b106e236a8e500a247b144d700e0dc32824678a1ae21d716e21
MD5 fb619111f0eea2e81dd00655fa10400b
BLAKE2b-256 429638021cf99f7c3b572706e81ff67aafdc292e30f9e9a496ba27ab0435210e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_type_guard-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 11be1f4d29509bf85c9b1a5554e1d235fd6d2d06f87cbc779e99aef63dad9844
MD5 6233075d9e4abb79c2c95bc35b267f60
BLAKE2b-256 719653e622b03ce9924c3b7563ce379a09710ad397b83aa108f3d7a1230e00e6

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