From 16689b4563b2fffa704ea6ed6c93a0a97403e9b3 Mon Sep 17 00:00:00 2001 From: Stephen Morton Date: Thu, 19 Dec 2024 02:11:02 -0800 Subject: [PATCH 1/2] expand the possible inputs to reversed --- stdlib/builtins.pyi | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index ad10ba9dff4c..d7b6536be065 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -1730,11 +1730,16 @@ def pow(base: _SupportsSomeKindOfPow, exp: complex, mod: None = None) -> complex quit: _sitebuiltins.Quitter +class _SupportsReversed(Protocol[_T]): + def __reversed__(self) -> _T: ... + class reversed(Generic[_T]): @overload def __new__(cls, sequence: Reversible[_T], /) -> Iterator[_T]: ... # type: ignore[misc] @overload - def __new__(cls, sequence: SupportsLenAndGetItem[_T], /) -> Iterator[_T]: ... # type: ignore[misc] + def __new__(cls, sequence: _SupportsReversed[_T], /) -> _T: ... # type: ignore[misc] + @overload + def __new__(cls, sequence: SupportsLenAndGetItem[_T], /) -> reversed[_T]: ... def __iter__(self) -> Self: ... def __next__(self) -> _T: ... def __length_hint__(self) -> int: ... From 5d8f455def8dbf16cac940847633f840957373c4 Mon Sep 17 00:00:00 2001 From: Stephen Morton Date: Thu, 19 Dec 2024 02:14:05 -0800 Subject: [PATCH 2/2] make it covariant --- stdlib/builtins.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index d7b6536be065..f599c4e672e0 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -1730,8 +1730,8 @@ def pow(base: _SupportsSomeKindOfPow, exp: complex, mod: None = None) -> complex quit: _sitebuiltins.Quitter -class _SupportsReversed(Protocol[_T]): - def __reversed__(self) -> _T: ... +class _SupportsReversed(Protocol[_T_co]): + def __reversed__(self) -> _T_co: ... class reversed(Generic[_T]): @overload