From d42c0fcd3f31ec9daa297c99af3368d7a6bd0efa Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Tue, 12 Jul 2022 06:02:17 -0700 Subject: [PATCH 1/4] Revert "add overload to tuple.__new__ to better express an empty tuple (#7454)" This reverts commit 64554bdd5de740cb49a5ecaa5f44b5af876751be. --- stdlib/builtins.pyi | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index d63f7855c247..1801ad6dcdc6 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -904,12 +904,7 @@ class slice: def indices(self, __len: SupportsIndex) -> tuple[int, int, int]: ... class tuple(Sequence[_T_co], Generic[_T_co]): - # overloads are ordered this way to pass `isinstance` checks - # see: https://github.com/python/typeshed/pull/7454#issuecomment-1061490888 - @overload - def __new__(cls: type[Self], __iterable: Iterable[_T_co]) -> Self: ... - @overload - def __new__(cls) -> tuple[()]: ... + def __new__(cls: type[Self], __iterable: Iterable[_T_co] = ...) -> Self: ... def __len__(self) -> int: ... def __contains__(self, __x: object) -> bool: ... @overload From 0d0b99e0730f9b0eebedd3f42cbc1f2fba3364ac Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Tue, 12 Jul 2022 12:14:45 -0700 Subject: [PATCH 2/4] add test case --- test_cases/stdlib/builtins/test_tuple.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 test_cases/stdlib/builtins/test_tuple.py diff --git a/test_cases/stdlib/builtins/test_tuple.py b/test_cases/stdlib/builtins/test_tuple.py new file mode 100644 index 000000000000..79036d75d63f --- /dev/null +++ b/test_cases/stdlib/builtins/test_tuple.py @@ -0,0 +1,9 @@ +from typing_extensions import assert_type + + +# Empty tuples, see #8275 +class TupleSub(tuple[int, ...]): + pass + +assert_type(TupleSub(), TupleSub) +assert_type(TupleSub([1, 2, 3]), TupleSub) \ No newline at end of file From cb481f71c1ca29771fb8e1b1380c77b09a80a264 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 12 Jul 2022 19:15:57 +0000 Subject: [PATCH 3/4] [pre-commit.ci] auto fixes from pre-commit.com hooks --- test_cases/stdlib/builtins/test_tuple.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test_cases/stdlib/builtins/test_tuple.py b/test_cases/stdlib/builtins/test_tuple.py index 79036d75d63f..74391fac64e0 100644 --- a/test_cases/stdlib/builtins/test_tuple.py +++ b/test_cases/stdlib/builtins/test_tuple.py @@ -5,5 +5,6 @@ class TupleSub(tuple[int, ...]): pass + assert_type(TupleSub(), TupleSub) -assert_type(TupleSub([1, 2, 3]), TupleSub) \ No newline at end of file +assert_type(TupleSub([1, 2, 3]), TupleSub) From 676c09924d48f9548c6d4060caaa7a0882822b81 Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Tue, 12 Jul 2022 12:18:02 -0700 Subject: [PATCH 4/4] no PEP 585 for you --- test_cases/stdlib/builtins/test_tuple.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test_cases/stdlib/builtins/test_tuple.py b/test_cases/stdlib/builtins/test_tuple.py index 74391fac64e0..d5e7516bc7a9 100644 --- a/test_cases/stdlib/builtins/test_tuple.py +++ b/test_cases/stdlib/builtins/test_tuple.py @@ -1,8 +1,9 @@ from typing_extensions import assert_type +from typing import Tuple # Empty tuples, see #8275 -class TupleSub(tuple[int, ...]): +class TupleSub(Tuple[int, ...]): pass