Skip to content

Commit 2acaa5a

Browse files
test that all names are present in __all__ (#1138)
1 parent e7bc381 commit 2acaa5a

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

typing_extensions/src/test_typing_extensions.py

+21
Original file line numberDiff line numberDiff line change
@@ -2743,6 +2743,27 @@ def test_typing_extensions_includes_standard(self):
27432743
for name in a:
27442744
self.assertTrue(hasattr(typing_extensions, name))
27452745

2746+
def test_all_names_in___all__(self):
2747+
exclude = {
2748+
'GenericMeta',
2749+
'KT',
2750+
'PEP_560',
2751+
'T',
2752+
'T_co',
2753+
'T_contra',
2754+
'VT',
2755+
}
2756+
actual_names = {
2757+
name for name in dir(typing_extensions)
2758+
if not name.startswith("_")
2759+
and not isinstance(getattr(typing_extensions, name), types.ModuleType)
2760+
}
2761+
# Make sure all public names are in __all__
2762+
self.assertEqual({*exclude, *typing_extensions.__all__},
2763+
actual_names)
2764+
# Make sure all excluded names actually exist
2765+
self.assertLessEqual(exclude, actual_names)
2766+
27462767
def test_typing_extensions_defers_when_possible(self):
27472768
exclude = {
27482769
'overload',

typing_extensions/src/typing_extensions.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
'Final',
1616
'LiteralString',
1717
'ParamSpec',
18+
'ParamSpecArgs',
19+
'ParamSpecKwargs',
1820
'Self',
1921
'Type',
2022
'TypeVarTuple',
@@ -933,9 +935,9 @@ def __init_subclass__(cls, *args, **kwargs):
933935
_BaseGenericAlias = typing._GenericAlias
934936
try:
935937
# 3.9+
936-
from typing import GenericAlias
938+
from typing import GenericAlias as _typing_GenericAlias
937939
except ImportError:
938-
GenericAlias = typing._GenericAlias
940+
_typing_GenericAlias = typing._GenericAlias
939941

940942
def get_origin(tp):
941943
"""Get the unsubscripted version of a type.
@@ -954,7 +956,7 @@ def get_origin(tp):
954956
"""
955957
if isinstance(tp, _AnnotatedAlias):
956958
return Annotated
957-
if isinstance(tp, (typing._GenericAlias, GenericAlias, _BaseGenericAlias,
959+
if isinstance(tp, (typing._GenericAlias, _typing_GenericAlias, _BaseGenericAlias,
958960
ParamSpecArgs, ParamSpecKwargs)):
959961
return tp.__origin__
960962
if tp is typing.Generic:
@@ -974,7 +976,7 @@ def get_args(tp):
974976
"""
975977
if isinstance(tp, _AnnotatedAlias):
976978
return (tp.__origin__,) + tp.__metadata__
977-
if isinstance(tp, (typing._GenericAlias, GenericAlias)):
979+
if isinstance(tp, (typing._GenericAlias, _typing_GenericAlias)):
978980
if getattr(tp, "_special", False):
979981
return ()
980982
res = tp.__args__

0 commit comments

Comments
 (0)