From: Anthony Sottile Date: Thu, 30 May 2019 04:05:33 +0000 (-0700) Subject: [3.7] bpo-36983: Fix typing.__all__ and add test for exported names (GH-13456) (GH... X-Git-Tag: v3.7.4rc1~83 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3a98bbf7275903a0f84d1374abd0b7f3a85950a4;p=thirdparty%2FPython%2Fcpython.git [3.7] bpo-36983: Fix typing.__all__ and add test for exported names (GH-13456) (GH-13662) https://bugs.python.org/issue36983 Fixes issue 36983 --- diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 0d66ebbd1845..ffd2007ee70d 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -2665,6 +2665,30 @@ class AllTests(BaseTestCase): self.assertIn('SupportsBytes', a) self.assertIn('SupportsComplex', a) + def test_all_exported_names(self): + import typing + + actual_all = set(typing.__all__) + computed_all = { + k for k, v in vars(typing).items() + # explicitly exported, not a thing with __module__ + if k in actual_all or ( + # avoid private names + not k.startswith('_') and + # avoid things in the io / re typing submodules + k not in typing.io.__all__ and + k not in typing.re.__all__ and + k not in {'io', 're'} and + # there's a few types and metaclasses that aren't exported + not k.endswith(('Meta', '_contra', '_co')) and + not k.upper() == k and + # but export all things that have __module__ == 'typing' + getattr(v, '__module__', None) == typing.__name__ + ) + } + self.assertSetEqual(computed_all, actual_all) + + if __name__ == '__main__': main() diff --git a/Lib/typing.py b/Lib/typing.py index 8cf0d00bceaf..9851cb4c7ebd 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -36,6 +36,7 @@ __all__ = [ 'Any', 'Callable', 'ClassVar', + 'ForwardRef', 'Generic', 'Optional', 'Tuple', @@ -79,11 +80,13 @@ __all__ = [ 'SupportsRound', # Concrete collection types. + 'ChainMap', 'Counter', 'Deque', 'Dict', 'DefaultDict', 'List', + 'OrderedDict', 'Set', 'FrozenSet', 'NamedTuple', # Not really a type. diff --git a/Misc/NEWS.d/next/Library/2019-05-20-20-41-30.bpo-36983.hz-fLr.rst b/Misc/NEWS.d/next/Library/2019-05-20-20-41-30.bpo-36983.hz-fLr.rst new file mode 100644 index 000000000000..bd2d91ad9234 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-05-20-20-41-30.bpo-36983.hz-fLr.rst @@ -0,0 +1,2 @@ +Add missing names to ``typing.__all__``: ``ChainMap``, ``ForwardRef``, +``OrderedDict`` - by Anthony Sottile.