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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|