mirror of
https://github.com/python/cpython.git
synced 2025-11-01 02:38:53 +00:00
bpo-44468: Never skip base classes in typing.get_type_hints(), even with invalid .__module__. (GH-26862)
This commit is contained in:
parent
521ba8892e
commit
7569c0fe91
3 changed files with 21 additions and 11 deletions
|
|
@ -2277,13 +2277,6 @@ class ClassVarTests(BaseTestCase):
|
|||
with self.assertRaises(TypeError):
|
||||
issubclass(int, ClassVar)
|
||||
|
||||
def test_bad_module(self):
|
||||
# bpo-41515
|
||||
class BadModule:
|
||||
pass
|
||||
BadModule.__module__ = 'bad' # Something not in sys.modules
|
||||
self.assertEqual(get_type_hints(BadModule), {})
|
||||
|
||||
class FinalTests(BaseTestCase):
|
||||
|
||||
def test_basics(self):
|
||||
|
|
@ -3033,6 +3026,24 @@ class GetTypeHintTests(BaseTestCase):
|
|||
# This previously raised an error under PEP 563.
|
||||
self.assertEqual(get_type_hints(Foo), {'x': str})
|
||||
|
||||
def test_get_type_hints_bad_module(self):
|
||||
# bpo-41515
|
||||
class BadModule:
|
||||
pass
|
||||
BadModule.__module__ = 'bad' # Something not in sys.modules
|
||||
self.assertNotIn('bad', sys.modules)
|
||||
self.assertEqual(get_type_hints(BadModule), {})
|
||||
|
||||
def test_get_type_hints_annotated_bad_module(self):
|
||||
# See https://bugs.python.org/issue44468
|
||||
class BadBase:
|
||||
foo: tuple
|
||||
class BadType(BadBase):
|
||||
bar: list
|
||||
BadType.__module__ = BadBase.__module__ = 'bad'
|
||||
self.assertNotIn('bad', sys.modules)
|
||||
self.assertEqual(get_type_hints(BadType), {'foo': tuple, 'bar': list})
|
||||
|
||||
|
||||
class GetUtilitiesTestCase(TestCase):
|
||||
def test_get_origin(self):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue