Skip to main content

Extend typehints to include dynamic checks (that might otherwise be dealt with by assertions) in Python.

Project description

Wheel Tests License Python Versions

For more info, please visit the GitHub page of this project.

Basic example

import parameter_checks as pc


@pc.hints.cleanup   # be left with only type-annotations
@pc.hints.enforce   # enforce the lambda but not the types
def div(a: int, b: pc.annotations.Checks[int, lambda b: b != 0]):
    return a / b 

div(1, 1)   # returns 1.0
div(1, 0)   # raises ValueError

As can be seen in this example, this package provides a new type-annotation: pc.annotations.Checks (it also provides pc.annotations.Hooks, see below). Using @pc.hints.enforce on a function will enforce the checks given to those annotations (but not the types). @pc.hints.cleanup would produce the div.__annotations__ of {"a": int, "b": int} in the example above.

Complex example

import parameter_checks as pc


def decision_boundary(fct, parameter, parameter_name, typehint):
    if type(parameter) is not typehint:
        err_str = f"In function {fct}, parameter {parameter_name}={parameter} " \
                  f"is not of type {typehint}!"
        raise TypeError(err_str)
    
    return 3 + 4 * parameter - parameter ** 2


@pc.hints.enforce
def classify(
        x: pc.annotations.Hooks[float, decision_boundary],
        additional_offset: pc.annotations.Checks[float, lambda b: 0 <= b <= 100] = 0.
) -> bool:
    return (x + additional_offset) >= 0
    

if __name__ == '__main__':
    assert classify(1.) is True   # 6.
    assert classify(2.) is True   # 7.
    assert classify(5.) is False   # -2.
    assert classify(5., 2.) is True   # 0.
    
    classify("not a float!")  # raises TypeError
    classify(1., -1.)   # raises ValueError

For additional comments on this example (and much more), visit the GitHub page of this project.

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

parameter-checks-1.0.0.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

parameter_checks-1.0.0-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file parameter-checks-1.0.0.tar.gz.

File metadata

  • Download URL: parameter-checks-1.0.0.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.13

File hashes

Hashes for parameter-checks-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f09b3043ea45f65376761ec6c1f78ac59695feb39f4e8a14e30d173e9d08c7e1
MD5 c44290efcc296dd54f4d1fdd4db74eff
BLAKE2b-256 b90b7a02003923dfa7927f46c56134b52b99e2264edb241282bb9f3acb4e650f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for parameter_checks-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d07ff8a84d45f902a324d50c97351522151e054c9e079b029efeb94450b70eb2
MD5 1aebe019f21e9e50edbd00284fef6eeb
BLAKE2b-256 71ffe48678d085ffbca8de01f23df7c6ccf4ffc622aef68e71ddc1428f2cd7d5

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