typing-validation: Validation using Type Hints
Typing-validation is a small library to perform runtime validation of Python objects using PEP 484 type hints.
GitHub repo: https://github.com/hashberg-io/typing-validation
If val
is a value of type t
, the call validate(val, t)
raises no error:
>>> from typing_validation import validate
>>> validate([0, 1, 2], list[int])
True # no error raised => [0, 1, 2] is a value of type list[int]
If val
is not a value of type t
, the call validate(val, t)
raises a TypeError
, with detailed information about validation failure(s):
>>> validate([[0, 1, 2], {"hi": 0}], list[Union[Collection[int], dict[str, str]]])
TypeError: Runtime validation error raised by validate(val, t), details below.
For type list[typing.Union[typing.Collection[int], dict[str, str]]], invalid value at idx: 1
For union type typing.Union[typing.Collection[int], dict[str, str]], invalid value: {'hi': 0}
For member type typing.Collection[int], invalid value at idx: 0
For type <class 'int'>, invalid value: 'hi'
For member type dict[str, str], invalid value at key: 'hi'
For type <class 'str'>, invalid value: 0
The function is_valid
is a variant of the validate
function which returns False
in case of validation failure, instead of raising TypeError
:
>>> from typing_validation import is_valid
>>> is_valid([0, 1, "hi"], list[int])
False
Contents: