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 diff --git a/test_cases/stdlib/builtins/test_tuple.py b/test_cases/stdlib/builtins/test_tuple.py new file mode 100644 index 000000000000..d5e7516bc7a9 --- /dev/null +++ b/test_cases/stdlib/builtins/test_tuple.py @@ -0,0 +1,11 @@ +from typing_extensions import assert_type +from typing import Tuple + + +# Empty tuples, see #8275 +class TupleSub(Tuple[int, ...]): + pass + + +assert_type(TupleSub(), TupleSub) +assert_type(TupleSub([1, 2, 3]), TupleSub)