From d482d4e83c9d247e79c87d954a9ccb11f85bfc37 Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Wed, 17 Jul 2024 06:37:31 -0700 Subject: [PATCH] More precise type for `TypeAliasType.__getitem__` (#12354) At runtime, this always returns a GenericAlias; see typealias_subscript in Objects/typevarobject.c. See microsoft/pyright#8444. --- stdlib/typing.pyi | 2 +- stdlib/typing_extensions.pyi | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/stdlib/typing.pyi b/stdlib/typing.pyi index c64baf6ba..f4de1fa86 100644 --- a/stdlib/typing.pyi +++ b/stdlib/typing.pyi @@ -1056,7 +1056,7 @@ if sys.version_info >= (3, 12): # It's writable on types, but not on instances of TypeAliasType. @property def __module__(self) -> str | None: ... # type: ignore[override] - def __getitem__(self, parameters: Any) -> Any: ... + def __getitem__(self, parameters: Any) -> GenericAlias: ... def __or__(self, right: Any) -> _SpecialForm: ... def __ror__(self, left: Any) -> _SpecialForm: ... diff --git a/stdlib/typing_extensions.pyi b/stdlib/typing_extensions.pyi index a7d2b2c2e..1e4f90a0a 100644 --- a/stdlib/typing_extensions.pyi +++ b/stdlib/typing_extensions.pyi @@ -403,6 +403,7 @@ else: # It's writable on types, but not on instances of TypeAliasType. @property def __module__(self) -> str | None: ... # type: ignore[override] + # Returns typing._GenericAlias, which isn't stubbed. def __getitem__(self, parameters: Any) -> Any: ... if sys.version_info >= (3, 10): def __or__(self, right: Any) -> _SpecialForm: ...