Co-authored-by: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Co-authored-by: efahl <36704995+efahl@users.noreply.github.com>
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
+ assert(get_type_hints(BadModule), {})
class FinalTests(BaseTestCase):
hints = {}
for base in reversed(obj.__mro__):
if globalns is None:
- base_globals = sys.modules[base.__module__].__dict__
+ try:
+ base_globals = sys.modules[base.__module__].__dict__
+ except KeyError:
+ continue
else:
base_globals = globalns
ann = base.__dict__.get('__annotations__', {})
--- /dev/null
+Fix :exc:`KeyError` raised in :func:`typing.get_type_hints` due to
+synthetic modules that don't appear in ``sys.modules``.