Allow reversed to take any object implementing __len__ and __getitem__ (#5820)

`reversed` is currently annotated as accepting either a `Sequence` or objects implementing the `__reversed__` protocol.
This however is too strict as, per its [docs](https://docs.python.org/3/library/functions.html#reversed), it can take any object that implements `__len__` and `__getitem__`.
This commit is contained in:
Bas van Beek
2021-07-29 16:48:14 +02:00
committed by GitHub
parent 65b3a4b09d
commit 7c37d6117d
3 changed files with 11 additions and 6 deletions

View File

@@ -11,6 +11,7 @@ from _typeshed import (
StrOrBytesPath,
SupportsDivMod,
SupportsKeysAndGetItem,
SupportsLenAndGetItem,
SupportsLessThan,
SupportsLessThanT,
SupportsRDivMod,
@@ -1286,10 +1287,10 @@ else:
def quit(code: object = ...) -> NoReturn: ...
class reversed(Iterator[_T], Generic[_T]):
@overload
def __init__(self, __sequence: Sequence[_T]) -> None: ...
@overload
def __init__(self, __sequence: Reversible[_T]) -> None: ...
@overload
def __init__(self, __sequence: SupportsLenAndGetItem[_T]) -> None: ...
def __iter__(self) -> Iterator[_T]: ...
def __next__(self) -> _T: ...