mirror of
https://github.com/python/cpython.git
synced 2025-11-25 04:34:37 +00:00
bpo-42740: Support PEP 604, 612 for typing.py get_args and get_origin (GH-23942)
This commit is contained in:
parent
a6d63a20df
commit
efb1f0918f
3 changed files with 15 additions and 1 deletions
|
|
@ -1668,6 +1668,8 @@ def get_origin(tp):
|
|||
return tp.__origin__
|
||||
if tp is Generic:
|
||||
return Generic
|
||||
if isinstance(tp, types.Union):
|
||||
return types.Union
|
||||
return None
|
||||
|
||||
|
||||
|
|
@ -1686,9 +1688,13 @@ def get_args(tp):
|
|||
return (tp.__origin__,) + tp.__metadata__
|
||||
if isinstance(tp, (_GenericAlias, GenericAlias)):
|
||||
res = tp.__args__
|
||||
if tp.__origin__ is collections.abc.Callable and res[0] is not Ellipsis:
|
||||
if (tp.__origin__ is collections.abc.Callable
|
||||
and not (res[0] is Ellipsis
|
||||
or isinstance(res[0], (ParamSpec, _ConcatenateGenericAlias)))):
|
||||
res = (list(res[:-1]), res[-1])
|
||||
return res
|
||||
if isinstance(tp, types.Union):
|
||||
return tp.__args__
|
||||
return ()
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue