mirror of
https://github.com/python/cpython.git
synced 2025-09-18 22:50:26 +00:00
[3.10] bpo-44468: Never skip base classes in typing.get_type_hints()
, even with invalid .__module__
. (GH-26862) (GH-26920)
(cherry picked from commit 7569c0fe91
)
Co-authored-by: will-ca <willchencontact@gmail.com>
Automerge-Triggered-By: GH:gvanrossum
This commit is contained in:
parent
6cd369c48f
commit
3df23b5199
3 changed files with 21 additions and 11 deletions
|
@ -2276,13 +2276,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):
|
||||
|
@ -3032,6 +3025,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