Skip to content

Backports python 3.10 typing features into 3.7, 3.8, and 3.9.

License

Notifications You must be signed in to change notification settings

Lunarmagpie/sigparse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sigparse

Backports python3.10 typing features into python 3.7, 3.8, and 3.9.

Example

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)

PEP 604

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()

Notes

Inspect

This module uses inspect behind the scenes. For that reason:

  • All annotations are inspect._empty when there is no annotation.
  • sigparse.Parameter.default is inspect._empty when there is no default value.
  • sigparse.Parameter.kind is inspect._ParameterKind.
  • sigparse.ClassVar.default is inspect._empty when there is no default value to maintain consistency.

Annotated

typing.Annotated will always be evaluated with include_extras=True in python3.9.

About

Backports python 3.10 typing features into 3.7, 3.8, and 3.9.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages