Backports python3.10 typing features into python 3.7, 3.8, and 3.9.
import sigparse
def func(param_a: list[str], param_b: str | int, param_c: tuple[int | None]):
...
# This returns the same result in python 3.7, 3.8, 3.9, and 3.10!
sigparse.sigparse(func)Sigparse also supports classes.
import sigparse
class MyClass:
a: list[str]
b: str | int
c: tuple[int | None]
sigparse.classparse(MyClass)By default PEP 604 (| for unions) is only enabled for sigparse.sigparse and sigparse.classparse.
The code for PEP 604 was written by @Endercheif.
To enable globally:
import sigparse
sigparse.global_PEP604()This module uses inspect behind the scenes. For that reason:
- All annotations are
inspect._emptywhen there is no annotation. sigparse.Parameter.defaultisinspect._emptywhen there is no default value.sigparse.Parameter.kindisinspect._ParameterKind.sigparse.ClassVar.defaultisinspect._emptywhen there is no default value to maintain consistency.
typing.Annotated will always be evaluated with include_extras=True in python3.9.