Improve stubs for sequence types (#6386)

This commit is contained in:
Alex Waygood
2021-11-27 03:09:38 +00:00
committed by GitHub
parent 6130c2459e
commit 98af7d667f
9 changed files with 32 additions and 29 deletions

View File

@@ -2,7 +2,7 @@ import sys
from _collections_abc import dict_items, dict_keys, dict_values
from _typeshed import Self
from typing import Any, Dict, Generic, NoReturn, Tuple, Type, TypeVar, overload
from typing_extensions import final
from typing_extensions import SupportsIndex, final
if sys.version_info >= (3, 9):
from types import GenericAlias
@@ -58,14 +58,14 @@ class UserList(MutableSequence[_T]):
def __contains__(self, item: object) -> bool: ...
def __len__(self) -> int: ...
@overload
def __getitem__(self, i: int) -> _T: ...
def __getitem__(self, i: SupportsIndex) -> _T: ...
@overload
def __getitem__(self: Self, i: slice) -> Self: ...
@overload
def __setitem__(self, i: int, o: _T) -> None: ...
def __setitem__(self, i: SupportsIndex, o: _T) -> None: ...
@overload
def __setitem__(self, i: slice, o: Iterable[_T]) -> None: ...
def __delitem__(self, i: int | slice) -> None: ...
def __delitem__(self, i: SupportsIndex | slice) -> None: ...
def __add__(self: _S, other: Iterable[_T]) -> _S: ...
def __iadd__(self: _S, other: Iterable[_T]) -> _S: ...
def __mul__(self: _S, n: int) -> _S: ...
@@ -98,7 +98,7 @@ class UserString(Sequence[str]):
def __contains__(self, char: object) -> bool: ...
def __len__(self) -> int: ...
# It should return a str to implement Sequence correctly, but it doesn't.
def __getitem__(self: _UserStringT, i: int | slice) -> _UserStringT: ... # type: ignore[override]
def __getitem__(self: _UserStringT, i: SupportsIndex | slice) -> _UserStringT: ... # type: ignore[override]
def __iter__(self: _UserStringT) -> Iterator[_UserStringT]: ... # type: ignore[override]
def __reversed__(self: _UserStringT) -> Iterator[_UserStringT]: ... # type: ignore[override]
def __add__(self: _UserStringT, other: object) -> _UserStringT: ...
@@ -187,15 +187,15 @@ class deque(MutableSequence[_T], Generic[_T]):
# These methods of deque don't really take slices, but we need to
# define them as taking a slice to satisfy MutableSequence.
@overload
def __getitem__(self, __index: int) -> _T: ...
def __getitem__(self, __index: SupportsIndex) -> _T: ...
@overload
def __getitem__(self, __s: slice) -> MutableSequence[_T]: ...
@overload
def __setitem__(self, __i: int, __x: _T) -> None: ...
def __setitem__(self, __i: SupportsIndex, __x: _T) -> None: ...
@overload
def __setitem__(self, __s: slice, __o: Iterable[_T]) -> None: ...
@overload
def __delitem__(self, __i: int) -> None: ...
def __delitem__(self, __i: SupportsIndex) -> None: ...
@overload
def __delitem__(self, __s: slice) -> None: ...
def __contains__(self, __o: object) -> bool: ...