Skip to main content

Minimal Python decorator to enforce type validation from type hints

Project description

pvv

Minimal Python decorator to enforce type validation from type hints

Installation

This library has been created to have zero dependencies, and work with native Python. Use your favorite package manager to install pvv from PyPI.

pip install pvv

Usage

There are two ways to use the validate decorator from pvv:

Validate all parameters

Just use the decorator. A TypeError will be raised if the function is called with parameters of incorrect type.

[!NOTE] pvv will check if the given parameters to a function are instances of the class annotated as a parameter. If one parameter has no type hints, it will be ignored in the validation.

[!WARNING] pvv will only work with type hints that can be used with class and instance checks.

from pvv import validate

@validate
def function(a: str, b: int, c):
    pass
>>> function("a", 3, 2)
>>> function(c=2, a="a", b=2)
>>> function(3, "a", 2)
TypeError: Incorrect type of function arguments: 'a' must be of type 'str', 'b' must be of type 'int'

Validate some parameters

from pvv import validate

@validate('a', 'c')
def function(a: str, b: int, c: bool | None):
    pass
>>> function("a", 3, True)
>>> function(3, "b", 0)
TypeError: Incorrect type of function arguments: 'a' must be of type 'str', 'c' must be of type 'bool | None'

An important note

The parameters of the validate decorator must all be of type str, otherwise a ValidatorError will be raised:

>>> @validate('a', 1)
... def func(*args, **kwargs):
...     pass
pvv.exceptions.ValidatorError: All arguments of decorator must be of type 'str'

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

pvv-1.0.0.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pvv-1.0.0-py3-none-any.whl (4.5 kB view details)

Uploaded Python 3

File details

Details for the file pvv-1.0.0.tar.gz.

File metadata

  • Download URL: pvv-1.0.0.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.1 Darwin/23.3.0

File hashes

Hashes for pvv-1.0.0.tar.gz
Algorithm Hash digest
SHA256 8f19c8eba7943fb170eb217ed143514b86a444f3a000295b8a385f6b2d11b8e6
MD5 54a5d47b5add3b82e3229d9cbcc19f9e
BLAKE2b-256 24e349dd959e7b6c36aa945f621778df8eb93ea874ee80b1b1a8cef78cf6150a

See more details on using hashes here.

File details

Details for the file pvv-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: pvv-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 4.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.1 Darwin/23.3.0

File hashes

Hashes for pvv-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4ecdb152c770aa4799f3242cfd5f4f26529aee028f5b3b835629f06fc8f9ce18
MD5 355ee0b7881adc96e463a5b97eb5f8fa
BLAKE2b-256 030a43fb498e5887532a6072ce25ffc5122133ba0e73689a6fdcb9d7140fc057

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