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)

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.5.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.5-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_type_guard-0.1.5.tar.gz
Algorithm Hash digest
SHA256 53c6dfb260b9a2b91519e81ff830f6758f8009e205492902fe419085d44def3c
MD5 969a3d0320399bd81bfb8c1d825617f2
BLAKE2b-256 68c4d3995ac24f6804506c1a8dda43f17a799579e104158b1cf20f48f3da55f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_type_guard-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 27f41c97ee9676cbcb690a3e04b7f6d1ce6157b5583c8884d58e4f1504d64bbd
MD5 acb05a98d3552caee023558ec9c70b6f
BLAKE2b-256 0e6c8a9ebe7b23f89325e1bf8c7bf4ad27fd09c56ecfa49a236a0b20c09fff56

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