diff options
Diffstat (limited to 'Lib/typing.py')
| -rw-r--r-- | Lib/typing.py | 8 |
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 () |
