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

  • @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.2.tar.gz (4.7 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.2-py3-none-any.whl (4.5 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_type_guard-0.1.2.tar.gz
Algorithm Hash digest
SHA256 b0475ed3f9939165aa1d6ee951f9a0de75943d996dae33f444902442a6004110
MD5 c9b53f97c6fff4bcbc1070b97b2a571d
BLAKE2b-256 439648bf6dd1312e0fe7d1b90b075ede8524cf107a98a8409ce66e26569a2f5f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_type_guard-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1c81a7ef4b0ccc4c02505401051cee15d80375bb5faf994e2e3c5e30a4256b9c
MD5 a8ec8ac94451e01a4e80039c8e2b3f97
BLAKE2b-256 5cd0e889dc125e92f4d9c1c52d5b81124ad99398b226d3792f3c87e8fadf3da7

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