77import pybind11_stubgen
88from pybind11_stubgen .structs import Identifier
99from pybind11_stubgen .parser .mixins .filter import FilterClassMembers
10- from pybind11_stubgen import main as pybind11_stubgen_main
10+
11+
12+ ForwardRefPattern = re .compile (r"ForwardRef\('(?P<variable>[a-zA-Z_][a-zA-Z0-9_]*)'\)" )
13+
14+ QuotePattern = re .compile (r"'(?P<variable>[a-zA-Z_][a-zA-Z0-9_]*)'" )
15+
16+
17+ def fix_value (value : str ) -> str :
18+ value = value .replace ("NoneType" , "None" )
19+ value = ForwardRefPattern .sub (lambda match : match .group ("variable" ), value )
20+ value = QuotePattern .sub (lambda match : match .group ("variable" ), value )
21+ return value
22+
1123
1224UnionPattern = re .compile (
13- r"^(?P<variable>[a-zA-Z_][a-zA-Z0-9_]*): types\.UnionType\s*#\s*value = (?P<value>.*)$" ,
25+ r"^(?P<variable>[a-zA-Z_][a-zA-Z0-9_]*): ( types\.UnionType|typing\._UnionGenericAlias) \s*#\s*value = (?P<value>.*)$" ,
1426 flags = re .MULTILINE ,
1527)
1628
1729
1830def union_sub_func (match : re .Match [str ]) -> str :
19- return f'{ match .group ("variable" )} : typing.TypeAlias = { match .group ("value" )} '
31+ return f'{ match .group ("variable" )} : typing.TypeAlias = { fix_value ( match .group ("value" ) )} '
2032
2133
2234ClassVarUnionPattern = re .compile (
@@ -26,7 +38,7 @@ def union_sub_func(match: re.Match[str]) -> str:
2638
2739
2840def class_var_union_sub_func (match : re .Match ) -> str :
29- return f'{ match .group ("variable" )} : typing.TypeAlias = { match .group ("value" )} '
41+ return f'{ match .group ("variable" )} : typing.TypeAlias = { fix_value ( match .group ("value" ) )} '
3042
3143
3244VersionPattern = re .compile (r"(?P<var>[a-zA-Z0-9_].*): str = '.*?'" )
@@ -87,7 +99,7 @@ def eq_sub_func(match: re.Match[str]) -> str:
8799
88100
89101def generic_alias_sub_func (match : re .Match ) -> str :
90- return f" { match .group (' variable' )} : typing.TypeAlias = { match .group (' value' ) } "
102+ return f' { match .group (" variable" )} : typing.TypeAlias = { fix_value ( match .group (" value" )) } '
91103
92104
93105def get_module_path (name : str ) -> str :
0 commit comments