Extend typehints to include dynamic checks (that might otherwise be dealt with by assertions) in Python.
Project description
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | f09b3043ea45f65376761ec6c1f78ac59695feb39f4e8a14e30d173e9d08c7e1 |
|
MD5 | c44290efcc296dd54f4d1fdd4db74eff |
|
BLAKE2b-256 | b90b7a02003923dfa7927f46c56134b52b99e2264edb241282bb9f3acb4e650f |
File details
Details for the file parameter_checks-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: parameter_checks-1.0.0-py3-none-any.whl
- Upload date:
- Size: 5.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d07ff8a84d45f902a324d50c97351522151e054c9e079b029efeb94450b70eb2 |
|
MD5 | 1aebe019f21e9e50edbd00284fef6eeb |
|
BLAKE2b-256 | 71ffe48678d085ffbca8de01f23df7c6ccf4ffc622aef68e71ddc1428f2cd7d5 |