Skip to main content

A simple library for runtime type-checking.

Project description

Python Typing Validation

Generic badge PyPI version shields.io PyPI status Checked with Mypy Python package standard-readme compliant

Table of Contents

Install

You can install the latest release from PyPI as follows:

pip install typing-validation

Usage

The core functionality of this library is provided by the validate function:

>>> from typing_validation import validate

The validate function is invoked with a value and a type as its arguments and it returns nothing when the given value is valid for the given type:

>>> validate(12, int)
# nothing is returned => 12 is a valid int

If the value is invalid for the given type, the validate function raises a TypeError:

>>> validate(12, str)
TypeError: For type <class 'str'>, invalid value: 12

For nested types (e.g. parametric collection/mapping types), the full chain of validation failures is shown by the type error:

>>> validate([0, 1, "hi"], list[int])
TypeError: For type list[int], invalid value: [0, 1, 'hi']
  For type <class 'int'>, invalid value: 'hi'

For union types, detailed validation failures are shown for individual union member types, where available:

>>> from typing import *
>>> validate([[0, 1, 2], {"hi": 0}], list[Union[Collection[int], dict[str, str]]])
TypeError: For type list[typing.Union[typing.Collection[int], dict[str, str]]],
invalid value: [[0, 1, 2], {'hi': 0}]
  For type typing.Union[typing.Collection[int], dict[str, str]], invalid value: {'hi': 0}
    Detailed failures for member type typing.Collection[int]:
      For type <class 'int'>, invalid value: 'hi'
    Detailed failures for member type dict[str, str]:
      For type <class 'str'>, invalid value: 0

API

The API documentation for this package is automatically generated by pdoc. Detailed examples can be found in the notebooks folder folder.

Contributing

Please see the contributing file.

License

MIT © Hashberg Ltd.

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

typing-validation-0.0.1.post4.tar.gz (27.9 kB view details)

Uploaded Source

Built Distribution

typing_validation-0.0.1.post4-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file typing-validation-0.0.1.post4.tar.gz.

File metadata

  • Download URL: typing-validation-0.0.1.post4.tar.gz
  • Upload date:
  • Size: 27.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.9.7

File hashes

Hashes for typing-validation-0.0.1.post4.tar.gz
Algorithm Hash digest
SHA256 5e7acab6eee3936fb3406c2b78fee24e9edb98ec764ac54c0b8d2bdf50f1998b
MD5 ba567a296c76cf75a4ecdbd39d49c8d8
BLAKE2b-256 80f7a3b832bbf79a9ab71f6e6e603f57b68b3bb013990b0c502eae5139113ea0

See more details on using hashes here.

File details

Details for the file typing_validation-0.0.1.post4-py3-none-any.whl.

File metadata

  • Download URL: typing_validation-0.0.1.post4-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.9.7

File hashes

Hashes for typing_validation-0.0.1.post4-py3-none-any.whl
Algorithm Hash digest
SHA256 71a90caa3b05faf56ffec138dbf590216dd483f09196260fb6458d61089d03d5
MD5 ba42428ca2b669037b6f368d0c7400d2
BLAKE2b-256 142dc393abb8104c34ec96d0006be427aa2f31c4b5a49ca7a16d88cb53ee2235

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page