mirror of https://github.com/python/cpython
bpo-46655: allow stringized TypeAlias with get_type_hints (GH-31156)
This commit is contained in:
parent
06b8f1615b
commit
77b025be4a
|
@ -4866,6 +4866,11 @@ class TypeAliasTests(BaseTestCase):
|
|||
with self.assertRaises(TypeError):
|
||||
isinstance(42, TypeAlias)
|
||||
|
||||
def test_stringized_usage(self):
|
||||
class A:
|
||||
a: "TypeAlias"
|
||||
self.assertEqual(get_type_hints(A), {'a': TypeAlias})
|
||||
|
||||
def test_no_issubclass(self):
|
||||
with self.assertRaises(TypeError):
|
||||
issubclass(Employee, TypeAlias)
|
||||
|
|
|
@ -174,7 +174,7 @@ def _type_check(arg, msg, is_argument=True, module=None, *, allow_special_forms=
|
|||
if (isinstance(arg, _GenericAlias) and
|
||||
arg.__origin__ in invalid_generic_forms):
|
||||
raise TypeError(f"{arg} is not valid as type argument")
|
||||
if arg in (Any, NoReturn, ClassVar, Final):
|
||||
if arg in (Any, NoReturn, ClassVar, Final, TypeAlias):
|
||||
return arg
|
||||
if isinstance(arg, _SpecialForm) or arg in (Generic, Protocol):
|
||||
raise TypeError(f"Plain {arg} is not valid as type argument")
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
In :func:`typing.get_type_hints`, support evaluating bare stringified ``TypeAlias`` annotations. Patch by Gregory Beauregard.
|
Loading…
Reference in New Issue