summaryrefslogtreecommitdiff
path: root/Lib/typing.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/typing.py')
-rw-r--r--Lib/typing.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/Lib/typing.py b/Lib/typing.py
index 67e95dd78f..d1db76f2f8 100644
--- a/Lib/typing.py
+++ b/Lib/typing.py
@@ -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 ()