From 87e8f58d4e2333a17bb4cdcca309e1f45f670757 Mon Sep 17 00:00:00 2001 From: Stanislav Zmiev Date: Fri, 24 Feb 2023 19:26:16 +0400 Subject: [PATCH 01/12] Add get_origin annotations --- stdlib/typing_extensions.pyi | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/stdlib/typing_extensions.pyi b/stdlib/typing_extensions.pyi index 7fced5ecdeec..ad4f055a64d6 100644 --- a/stdlib/typing_extensions.pyi +++ b/stdlib/typing_extensions.pyi @@ -1,6 +1,7 @@ import abc import collections import sys +from types import GenericAlias, UnionType import typing from _collections_abc import dict_items, dict_keys, dict_values from _typeshed import IdentityFunction, Incomplete @@ -155,6 +156,13 @@ def get_type_hints( include_extras: bool = False, ) -> dict[str, Any]: ... def get_args(tp: Any) -> tuple[Any, ...]: ... +@overload +def get_origin(tp: GenericAlias) -> type: ... +@overload +def get_origin(tp: ParamSpecArgs | ParamSpecKwargs) -> ParamSpec: ... +@overload +def get_origin(tp: UnionType) -> type[UnionType]: ... +@overload def get_origin(tp: Any) -> Any | None: ... Annotated: _SpecialForm From da99bd6f9dcd466fa13426008c520a639da68bda Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 24 Feb 2023 15:29:21 +0000 Subject: [PATCH 02/12] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stdlib/typing_extensions.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/typing_extensions.pyi b/stdlib/typing_extensions.pyi index ad4f055a64d6..7d5838683d23 100644 --- a/stdlib/typing_extensions.pyi +++ b/stdlib/typing_extensions.pyi @@ -1,11 +1,11 @@ import abc import collections import sys -from types import GenericAlias, UnionType import typing from _collections_abc import dict_items, dict_keys, dict_values from _typeshed import IdentityFunction, Incomplete from collections.abc import Iterable +from types import GenericAlias, UnionType from typing import ( # noqa: Y022,Y039 TYPE_CHECKING as TYPE_CHECKING, Any as Any, From 870ee631f0f60de6bebdad08f4dccfbe16e8dc04 Mon Sep 17 00:00:00 2001 From: Stanislav Zmiev Date: Fri, 24 Feb 2023 20:01:16 +0400 Subject: [PATCH 03/12] Update stdlib/typing_extensions.pyi Co-authored-by: Alex Waygood --- stdlib/typing_extensions.pyi | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/stdlib/typing_extensions.pyi b/stdlib/typing_extensions.pyi index 7d5838683d23..4280ee0389c7 100644 --- a/stdlib/typing_extensions.pyi +++ b/stdlib/typing_extensions.pyi @@ -156,14 +156,18 @@ def get_type_hints( include_extras: bool = False, ) -> dict[str, Any]: ... def get_args(tp: Any) -> tuple[Any, ...]: ... -@overload -def get_origin(tp: GenericAlias) -> type: ... -@overload -def get_origin(tp: ParamSpecArgs | ParamSpecKwargs) -> ParamSpec: ... -@overload -def get_origin(tp: UnionType) -> type[UnionType]: ... -@overload -def get_origin(tp: Any) -> Any | None: ... +if sys.version_info >= (3, 10): + @overload + def get_origin(tp: ParamSpecArgs | ParamSpecKwargs) -> ParamSpec: ... + @overload + def get_origin(tp: UnionType) -> type[UnionType]: ... +if sys.version_info >= (3, 9): + @overload + def get_origin(tp: GenericAlias) -> type: ... + @overload + def get_origin(tp: Any) -> Any | None: ... +else: + def get_origin(tp: Any) -> Any | None: ... Annotated: _SpecialForm _AnnotatedAlias: Any # undocumented From 1ebef5335b5cb6e7089650837bf0cd15fa389ee4 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 24 Feb 2023 16:02:38 +0000 Subject: [PATCH 04/12] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stdlib/typing_extensions.pyi | 3 +++ 1 file changed, 3 insertions(+) diff --git a/stdlib/typing_extensions.pyi b/stdlib/typing_extensions.pyi index 4280ee0389c7..5f8849f2c121 100644 --- a/stdlib/typing_extensions.pyi +++ b/stdlib/typing_extensions.pyi @@ -156,16 +156,19 @@ def get_type_hints( include_extras: bool = False, ) -> dict[str, Any]: ... def get_args(tp: Any) -> tuple[Any, ...]: ... + if sys.version_info >= (3, 10): @overload def get_origin(tp: ParamSpecArgs | ParamSpecKwargs) -> ParamSpec: ... @overload def get_origin(tp: UnionType) -> type[UnionType]: ... + if sys.version_info >= (3, 9): @overload def get_origin(tp: GenericAlias) -> type: ... @overload def get_origin(tp: Any) -> Any | None: ... + else: def get_origin(tp: Any) -> Any | None: ... From f274e905d47bb53dc1f75811144c2fe4f078c590 Mon Sep 17 00:00:00 2001 From: Stanislav Zmiev Date: Fri, 24 Feb 2023 20:22:05 +0400 Subject: [PATCH 05/12] Fixes after code review --- stdlib/typing.pyi | 25 ++++++++++++++++++++++--- stdlib/typing_extensions.pyi | 9 ++++++++- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/stdlib/typing.pyi b/stdlib/typing.pyi index 031acc7b950f..24b49ee88674 100644 --- a/stdlib/typing.pyi +++ b/stdlib/typing.pyi @@ -20,6 +20,11 @@ from types import ( ) from typing_extensions import Never as _Never, ParamSpec as _ParamSpec, final as _final +if sys.version_info >= (3, 10): + from types import UnionType +if sys.version_info >= (3, 9): + from types import GenericAlias + __all__ = [ "AbstractSet", "Any", @@ -741,12 +746,26 @@ if sys.version_info >= (3, 9): else: def get_type_hints( - obj: _get_type_hints_obj_allowed_types, globalns: dict[str, Any] | None = None, localns: dict[str, Any] | None = None + obj: _get_type_hints_obj_allowed_types, + globalns: dict[str, Any] | None = None, + localns: dict[str, Any] | None = None, ) -> dict[str, Any]: ... +def get_args(tp: Any) -> tuple[Any, ...]: ... + if sys.version_info >= (3, 8): - def get_origin(tp: Any) -> Any | None: ... - def get_args(tp: Any) -> tuple[Any, ...]: ... + if sys.version_info >= (3, 10): + @overload + def get_origin(tp: ParamSpecArgs | ParamSpecKwargs) -> ParamSpec: ... + @overload + def get_origin(tp: UnionType) -> type[UnionType]: ... + if sys.version_info >= (3, 9): + @overload + def get_origin(tp: GenericAlias) -> type: ... + @overload + def get_origin(tp: Any) -> Any | None: ... + else: + def get_origin(tp: Any) -> Any | None: ... @overload def cast(typ: Type[_T], val: Any) -> _T: ... diff --git a/stdlib/typing_extensions.pyi b/stdlib/typing_extensions.pyi index 4280ee0389c7..9a467d772712 100644 --- a/stdlib/typing_extensions.pyi +++ b/stdlib/typing_extensions.pyi @@ -5,7 +5,6 @@ import typing from _collections_abc import dict_items, dict_keys, dict_values from _typeshed import IdentityFunction, Incomplete from collections.abc import Iterable -from types import GenericAlias, UnionType from typing import ( # noqa: Y022,Y039 TYPE_CHECKING as TYPE_CHECKING, Any as Any, @@ -33,6 +32,11 @@ from typing import ( # noqa: Y022,Y039 type_check_only, ) +if sys.version_info >= (3, 10): + from types import UnionType +if sys.version_info >= (3, 9): + from types import GenericAlias + __all__ = [ "Any", "ClassVar", @@ -156,16 +160,19 @@ def get_type_hints( include_extras: bool = False, ) -> dict[str, Any]: ... def get_args(tp: Any) -> tuple[Any, ...]: ... + if sys.version_info >= (3, 10): @overload def get_origin(tp: ParamSpecArgs | ParamSpecKwargs) -> ParamSpec: ... @overload def get_origin(tp: UnionType) -> type[UnionType]: ... + if sys.version_info >= (3, 9): @overload def get_origin(tp: GenericAlias) -> type: ... @overload def get_origin(tp: Any) -> Any | None: ... + else: def get_origin(tp: Any) -> Any | None: ... From 001adb28816727e752d7771e549b1ca7e3d129db Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 24 Feb 2023 16:23:35 +0000 Subject: [PATCH 06/12] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stdlib/typing.pyi | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/stdlib/typing.pyi b/stdlib/typing.pyi index 24b49ee88674..ac8333012652 100644 --- a/stdlib/typing.pyi +++ b/stdlib/typing.pyi @@ -746,9 +746,7 @@ if sys.version_info >= (3, 9): else: def get_type_hints( - obj: _get_type_hints_obj_allowed_types, - globalns: dict[str, Any] | None = None, - localns: dict[str, Any] | None = None, + obj: _get_type_hints_obj_allowed_types, globalns: dict[str, Any] | None = None, localns: dict[str, Any] | None = None ) -> dict[str, Any]: ... def get_args(tp: Any) -> tuple[Any, ...]: ... From 887bf5b4c822e0e47915dbd283a5085558409ea9 Mon Sep 17 00:00:00 2001 From: Stanislav Zmiev Date: Fri, 24 Feb 2023 20:31:31 +0400 Subject: [PATCH 07/12] More code review fixes --- stdlib/typing.pyi | 10 +++++----- stdlib/typing_extensions.pyi | 7 ++----- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/stdlib/typing.pyi b/stdlib/typing.pyi index 24b49ee88674..7d0e22cd76fe 100644 --- a/stdlib/typing.pyi +++ b/stdlib/typing.pyi @@ -751,9 +751,10 @@ else: localns: dict[str, Any] | None = None, ) -> dict[str, Any]: ... -def get_args(tp: Any) -> tuple[Any, ...]: ... if sys.version_info >= (3, 8): + def get_args(tp: Any) -> tuple[Any, ...]: ... + if sys.version_info >= (3, 10): @overload def get_origin(tp: ParamSpecArgs | ParamSpecKwargs) -> ParamSpec: ... @@ -762,10 +763,9 @@ if sys.version_info >= (3, 8): if sys.version_info >= (3, 9): @overload def get_origin(tp: GenericAlias) -> type: ... - @overload - def get_origin(tp: Any) -> Any | None: ... - else: - def get_origin(tp: Any) -> Any | None: ... + + @overload + def get_origin(tp: Any) -> Any | None: ... @overload def cast(typ: Type[_T], val: Any) -> _T: ... diff --git a/stdlib/typing_extensions.pyi b/stdlib/typing_extensions.pyi index 9a467d772712..63f98716e473 100644 --- a/stdlib/typing_extensions.pyi +++ b/stdlib/typing_extensions.pyi @@ -166,15 +166,12 @@ if sys.version_info >= (3, 10): def get_origin(tp: ParamSpecArgs | ParamSpecKwargs) -> ParamSpec: ... @overload def get_origin(tp: UnionType) -> type[UnionType]: ... - if sys.version_info >= (3, 9): @overload def get_origin(tp: GenericAlias) -> type: ... - @overload - def get_origin(tp: Any) -> Any | None: ... -else: - def get_origin(tp: Any) -> Any | None: ... +@overload +def get_origin(tp: Any) -> Any | None: ... Annotated: _SpecialForm _AnnotatedAlias: Any # undocumented From 7b2b9cba13d756fa5c0e869f16038f795972064c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 24 Feb 2023 16:33:27 +0000 Subject: [PATCH 08/12] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stdlib/typing.pyi | 1 - stdlib/typing_extensions.pyi | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/typing.pyi b/stdlib/typing.pyi index 3176de4167e0..b7c161a045a4 100644 --- a/stdlib/typing.pyi +++ b/stdlib/typing.pyi @@ -749,7 +749,6 @@ else: obj: _get_type_hints_obj_allowed_types, globalns: dict[str, Any] | None = None, localns: dict[str, Any] | None = None ) -> dict[str, Any]: ... - if sys.version_info >= (3, 8): def get_args(tp: Any) -> tuple[Any, ...]: ... diff --git a/stdlib/typing_extensions.pyi b/stdlib/typing_extensions.pyi index 63f98716e473..276c35f472c2 100644 --- a/stdlib/typing_extensions.pyi +++ b/stdlib/typing_extensions.pyi @@ -166,6 +166,7 @@ if sys.version_info >= (3, 10): def get_origin(tp: ParamSpecArgs | ParamSpecKwargs) -> ParamSpec: ... @overload def get_origin(tp: UnionType) -> type[UnionType]: ... + if sys.version_info >= (3, 9): @overload def get_origin(tp: GenericAlias) -> type: ... From 7456d4d6b9550666c68ed73c99aa22b259b470a4 Mon Sep 17 00:00:00 2001 From: Stanislav Zmiev Date: Fri, 24 Feb 2023 20:35:35 +0400 Subject: [PATCH 09/12] Fix double overloads --- stdlib/typing.pyi | 6 ++++-- stdlib/typing_extensions.pyi | 7 ++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/stdlib/typing.pyi b/stdlib/typing.pyi index 3176de4167e0..00c25b671dd2 100644 --- a/stdlib/typing.pyi +++ b/stdlib/typing.pyi @@ -761,9 +761,11 @@ if sys.version_info >= (3, 8): if sys.version_info >= (3, 9): @overload def get_origin(tp: GenericAlias) -> type: ... + @overload + def get_origin(tp: Any) -> Any | None: ... + else: + def get_origin(tp: Any) -> Any | None: ... - @overload - def get_origin(tp: Any) -> Any | None: ... @overload def cast(typ: Type[_T], val: Any) -> _T: ... diff --git a/stdlib/typing_extensions.pyi b/stdlib/typing_extensions.pyi index 63f98716e473..2c4c69687aab 100644 --- a/stdlib/typing_extensions.pyi +++ b/stdlib/typing_extensions.pyi @@ -169,9 +169,10 @@ if sys.version_info >= (3, 10): if sys.version_info >= (3, 9): @overload def get_origin(tp: GenericAlias) -> type: ... - -@overload -def get_origin(tp: Any) -> Any | None: ... + @overload + def get_origin(tp: Any) -> Any | None: ... +else: + def get_origin(tp: Any) -> Any | None: ... Annotated: _SpecialForm _AnnotatedAlias: Any # undocumented From 6b791a4ee31fb36c45fd579530edba112fbcd3b6 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 24 Feb 2023 16:38:08 +0000 Subject: [PATCH 10/12] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stdlib/typing.pyi | 1 - stdlib/typing_extensions.pyi | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/typing.pyi b/stdlib/typing.pyi index a2f902a6fab3..4811ceb3ef57 100644 --- a/stdlib/typing.pyi +++ b/stdlib/typing.pyi @@ -765,7 +765,6 @@ if sys.version_info >= (3, 8): else: def get_origin(tp: Any) -> Any | None: ... - @overload def cast(typ: Type[_T], val: Any) -> _T: ... @overload diff --git a/stdlib/typing_extensions.pyi b/stdlib/typing_extensions.pyi index 207e4828c765..9a467d772712 100644 --- a/stdlib/typing_extensions.pyi +++ b/stdlib/typing_extensions.pyi @@ -172,6 +172,7 @@ if sys.version_info >= (3, 9): def get_origin(tp: GenericAlias) -> type: ... @overload def get_origin(tp: Any) -> Any | None: ... + else: def get_origin(tp: Any) -> Any | None: ... From 012db9f152135b4e502d2c6293a924d739eb42db Mon Sep 17 00:00:00 2001 From: Stanislav Zmiev Date: Sat, 25 Feb 2023 19:38:04 +0400 Subject: [PATCH 11/12] Add ParamSpec to get_origin in <3.9 --- stdlib/typing_extensions.pyi | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/stdlib/typing_extensions.pyi b/stdlib/typing_extensions.pyi index 9a467d772712..2ed26386a94d 100644 --- a/stdlib/typing_extensions.pyi +++ b/stdlib/typing_extensions.pyi @@ -162,19 +162,15 @@ def get_type_hints( def get_args(tp: Any) -> tuple[Any, ...]: ... if sys.version_info >= (3, 10): - @overload - def get_origin(tp: ParamSpecArgs | ParamSpecKwargs) -> ParamSpec: ... @overload def get_origin(tp: UnionType) -> type[UnionType]: ... - if sys.version_info >= (3, 9): @overload def get_origin(tp: GenericAlias) -> type: ... - @overload - def get_origin(tp: Any) -> Any | None: ... - -else: - def get_origin(tp: Any) -> Any | None: ... +@overload +def get_origin(tp: ParamSpecArgs | ParamSpecKwargs) -> ParamSpec: ... +@overload +def get_origin(tp: Any) -> Any | None: ... Annotated: _SpecialForm _AnnotatedAlias: Any # undocumented From faa6646f99fcf3766238b8f3a3fc426ccb6eaa7d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 25 Feb 2023 15:39:22 +0000 Subject: [PATCH 12/12] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stdlib/typing_extensions.pyi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stdlib/typing_extensions.pyi b/stdlib/typing_extensions.pyi index 2ed26386a94d..3233acc99f3e 100644 --- a/stdlib/typing_extensions.pyi +++ b/stdlib/typing_extensions.pyi @@ -164,9 +164,11 @@ def get_args(tp: Any) -> tuple[Any, ...]: ... if sys.version_info >= (3, 10): @overload def get_origin(tp: UnionType) -> type[UnionType]: ... + if sys.version_info >= (3, 9): @overload def get_origin(tp: GenericAlias) -> type: ... + @overload def get_origin(tp: ParamSpecArgs | ParamSpecKwargs) -> ParamSpec: ... @overload