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

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_type_guard-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b24abf4206dbe48d3695b947afdcf3e9ec431e27c255e82082aefb8d5d251c92
MD5 d0d4317a45162c7f7e187748333f12b5
BLAKE2b-256 18afe7bc5018ca3d45eb0897ae8dd6bfc7840cc48431de3f68e9b7aa99409461

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_type_guard-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c58b0089b5031ec373a64317ce110c65b2c3244fcc4e59427c9bf3b9e818aa19
MD5 8fc86fe23aa5fca4be8b8a10b7fdb89e
BLAKE2b-256 2486dbe633f20f1adf5794e6ed309772484e29c0102a70d8fc07395f75ab13f5

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