Skip to content

Commit

Permalink
test that all names are present in __all__ (#1138)
Browse files Browse the repository at this point in the history
  • Loading branch information
JelleZijlstra committed Apr 16, 2022
1 parent e7bc381 commit 2acaa5a
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
21 changes: 21 additions & 0 deletions typing_extensions/src/test_typing_extensions.py
Expand Up @@ -2743,6 +2743,27 @@ def test_typing_extensions_includes_standard(self):
for name in a:
self.assertTrue(hasattr(typing_extensions, name))

def test_all_names_in___all__(self):
exclude = {
'GenericMeta',
'KT',
'PEP_560',
'T',
'T_co',
'T_contra',
'VT',
}
actual_names = {
name for name in dir(typing_extensions)
if not name.startswith("_")
and not isinstance(getattr(typing_extensions, name), types.ModuleType)
}
# Make sure all public names are in __all__
self.assertEqual({*exclude, *typing_extensions.__all__},
actual_names)
# Make sure all excluded names actually exist
self.assertLessEqual(exclude, actual_names)

def test_typing_extensions_defers_when_possible(self):
exclude = {
'overload',
Expand Down
10 changes: 6 additions & 4 deletions typing_extensions/src/typing_extensions.py
Expand Up @@ -15,6 +15,8 @@
'Final',
'LiteralString',
'ParamSpec',
'ParamSpecArgs',
'ParamSpecKwargs',
'Self',
'Type',
'TypeVarTuple',
Expand Down Expand Up @@ -933,9 +935,9 @@ def __init_subclass__(cls, *args, **kwargs):
_BaseGenericAlias = typing._GenericAlias
try:
# 3.9+
from typing import GenericAlias
from typing import GenericAlias as _typing_GenericAlias
except ImportError:
GenericAlias = typing._GenericAlias
_typing_GenericAlias = typing._GenericAlias

def get_origin(tp):
"""Get the unsubscripted version of a type.
Expand All @@ -954,7 +956,7 @@ def get_origin(tp):
"""
if isinstance(tp, _AnnotatedAlias):
return Annotated
if isinstance(tp, (typing._GenericAlias, GenericAlias, _BaseGenericAlias,
if isinstance(tp, (typing._GenericAlias, _typing_GenericAlias, _BaseGenericAlias,
ParamSpecArgs, ParamSpecKwargs)):
return tp.__origin__
if tp is typing.Generic:
Expand All @@ -974,7 +976,7 @@ def get_args(tp):
"""
if isinstance(tp, _AnnotatedAlias):
return (tp.__origin__,) + tp.__metadata__
if isinstance(tp, (typing._GenericAlias, GenericAlias)):
if isinstance(tp, (typing._GenericAlias, _typing_GenericAlias)):
if getattr(tp, "_special", False):
return ()
res = tp.__args__
Expand Down

0 comments on commit 2acaa5a

Please sign in to comment.