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

@@ -1,6 +1,6 @@
import sys
from typing import Any, BinaryIO, Generic, Iterable, MutableSequence, TypeVar, Union, overload
from typing_extensions import Literal
from typing_extensions import Literal, SupportsIndex
_IntTypeCode = Literal["b", "B", "h", "H", "i", "I", "l", "L", "q", "Q"]
_FloatTypeCode = Literal["f", "d"]
@@ -48,14 +48,14 @@ class array(MutableSequence[_T], Generic[_T]):
def tostring(self) -> bytes: ...
def __len__(self) -> int: ...
@overload
def __getitem__(self, __i: int) -> _T: ...
def __getitem__(self, __i: SupportsIndex) -> _T: ...
@overload
def __getitem__(self, __s: slice) -> array[_T]: ...
@overload # type: ignore # Overrides MutableSequence
def __setitem__(self, __i: int, __o: _T) -> None: ...
def __setitem__(self, __i: SupportsIndex, __o: _T) -> None: ...
@overload
def __setitem__(self, __s: slice, __o: array[_T]) -> None: ...
def __delitem__(self, __i: int | slice) -> None: ...
def __delitem__(self, __i: SupportsIndex | slice) -> None: ...
def __add__(self, __x: array[_T]) -> array[_T]: ...
def __ge__(self, __other: array[_T]) -> bool: ...
def __gt__(self, __other: array[_T]) -> bool: ...

View File

@@ -424,7 +424,7 @@ class str(Sequence[str]):
def __contains__(self, __o: str) -> bool: ... # type: ignore[override]
def __eq__(self, __x: object) -> bool: ...
def __ge__(self, __x: str) -> bool: ...
def __getitem__(self, __i: int | slice) -> str: ...
def __getitem__(self, __i: SupportsIndex | slice) -> str: ...
def __gt__(self, __x: str) -> bool: ...
def __hash__(self) -> int: ...
def __iter__(self) -> Iterator[str]: ...
@@ -740,7 +740,7 @@ class tuple(Sequence[_T_co], Generic[_T_co]):
def __len__(self) -> int: ...
def __contains__(self, __x: object) -> bool: ...
@overload
def __getitem__(self, __x: int) -> _T_co: ...
def __getitem__(self, __x: SupportsIndex) -> _T_co: ...
@overload
def __getitem__(self, __x: slice) -> Tuple[_T_co, ...]: ...
def __iter__(self) -> Iterator[_T_co]: ...

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: ...

View File

@@ -5,6 +5,7 @@ from abc import abstractmethod
from collections.abc import Container, Iterable, Iterator, Sequence
from logging import Logger
from typing import Any, Callable, Generic, Protocol, Set, TypeVar, overload
from typing_extensions import SupportsIndex
if sys.version_info >= (3, 9):
from types import GenericAlias
@@ -81,7 +82,7 @@ class DoneAndNotDoneFutures(Sequence[Set[Future[_T]]]):
def __new__(_cls, done: set[Future[_T]], not_done: set[Future[_T]]) -> DoneAndNotDoneFutures[_T]: ...
def __len__(self) -> int: ...
@overload
def __getitem__(self, i: int) -> set[Future[_T]]: ...
def __getitem__(self, i: SupportsIndex) -> set[Future[_T]]: ...
@overload
def __getitem__(self, s: slice) -> DoneAndNotDoneFutures[_T]: ...

View File

@@ -11,7 +11,7 @@ from typing import (
TypeVar,
overload,
)
from typing_extensions import final
from typing_extensions import SupportsIndex, final
_T = TypeVar("_T")
_T_co = TypeVar("_T_co", covariant=True)
@@ -79,38 +79,38 @@ def contains(__a: Container[Any], __b: Any) -> bool: ...
def __contains__(a: Container[Any], b: Any) -> bool: ...
def countOf(__a: Container[Any], __b: Any) -> int: ...
@overload
def delitem(__a: MutableSequence[Any], __b: int) -> None: ...
def delitem(__a: MutableSequence[Any], __b: SupportsIndex) -> None: ...
@overload
def delitem(__a: MutableSequence[Any], __b: slice) -> None: ...
@overload
def delitem(__a: MutableMapping[_K, Any], __b: _K) -> None: ...
@overload
def __delitem__(a: MutableSequence[Any], b: int) -> None: ...
def __delitem__(a: MutableSequence[Any], b: SupportsIndex) -> None: ...
@overload
def __delitem__(a: MutableSequence[Any], b: slice) -> None: ...
@overload
def __delitem__(a: MutableMapping[_K, Any], b: _K) -> None: ...
@overload
def getitem(__a: Sequence[_T], __b: int) -> _T: ...
def getitem(__a: Sequence[_T], __b: SupportsIndex) -> _T: ...
@overload
def getitem(__a: Sequence[_T], __b: slice) -> Sequence[_T]: ...
@overload
def getitem(__a: Mapping[_K, _V], __b: _K) -> _V: ...
@overload
def __getitem__(a: Sequence[_T], b: int) -> _T: ...
def __getitem__(a: Sequence[_T], b: SupportsIndex) -> _T: ...
@overload
def __getitem__(a: Sequence[_T], b: slice) -> Sequence[_T]: ...
@overload
def __getitem__(a: Mapping[_K, _V], b: _K) -> _V: ...
def indexOf(__a: Sequence[_T], __b: _T) -> int: ...
@overload
def setitem(__a: MutableSequence[_T], __b: int, __c: _T) -> None: ...
def setitem(__a: MutableSequence[_T], __b: SupportsIndex, __c: _T) -> None: ...
@overload
def setitem(__a: MutableSequence[_T], __b: slice, __c: Sequence[_T]) -> None: ...
@overload
def setitem(__a: MutableMapping[_K, _V], __b: _K, __c: _V) -> None: ...
@overload
def __setitem__(a: MutableSequence[_T], b: int, c: _T) -> None: ...
def __setitem__(a: MutableSequence[_T], b: SupportsIndex, c: _T) -> None: ...
@overload
def __setitem__(a: MutableSequence[_T], b: slice, c: Sequence[_T]) -> None: ...
@overload

View File

@@ -1,6 +1,7 @@
import sys
from _tracemalloc import *
from typing import Optional, Sequence, Tuple, Union, overload
from typing_extensions import SupportsIndex
def get_object_traceback(obj: object) -> Traceback | None: ...
def take_snapshot() -> Snapshot: ...
@@ -63,7 +64,7 @@ class Traceback(Sequence[Frame]):
else:
def format(self, limit: int | None = ...) -> list[str]: ...
@overload
def __getitem__(self, i: int) -> Frame: ...
def __getitem__(self, i: SupportsIndex) -> Frame: ...
@overload
def __getitem__(self, s: slice) -> Sequence[Frame]: ...
def __len__(self) -> int: ...

View File

@@ -16,7 +16,7 @@ from typing import (
Union,
overload,
)
from typing_extensions import Literal
from typing_extensions import Literal, SupportsIndex
_T = TypeVar("_T")
_File = Union[StrOrBytesPath, FileDescriptor, IO[Any]]
@@ -87,14 +87,14 @@ class Element(MutableSequence[Element]):
def makeelement(self, __tag: str, __attrib: dict[str, str]) -> Element: ...
def remove(self, __subelement: Element) -> None: ...
def set(self, __key: str, __value: str) -> None: ...
def __delitem__(self, i: int | slice) -> None: ...
def __delitem__(self, i: SupportsIndex | slice) -> None: ...
@overload
def __getitem__(self, i: int) -> Element: ...
def __getitem__(self, i: SupportsIndex) -> Element: ...
@overload
def __getitem__(self, s: slice) -> MutableSequence[Element]: ...
def __len__(self) -> int: ...
@overload
def __setitem__(self, i: int, o: Element) -> None: ...
def __setitem__(self, i: SupportsIndex, o: Element) -> None: ...
@overload
def __setitem__(self, s: slice, o: Iterable[Element]) -> None: ...
if sys.version_info < (3, 9):

View File

@@ -27,7 +27,7 @@ class Markup(text_type):
def format(self, *args: Any, **kwargs: Any) -> Markup: ...
def __html_format__(self, format_spec: text_type) -> Markup: ...
def __getslice__(self, start: int, stop: int) -> Markup: ...
def __getitem__(self, i: int | slice) -> Markup: ...
def __getitem__(self, i: SupportsIndex | slice) -> Markup: ...
def capitalize(self) -> Markup: ...
def title(self) -> Markup: ...
def lower(self) -> Markup: ...

View File

@@ -13,6 +13,7 @@ from typing import (
Union,
overload,
)
from typing_extensions import SupportsIndex
from google.protobuf.descriptor import Descriptor
from google.protobuf.internal.message_listener import MessageListener
@@ -33,7 +34,7 @@ class BaseContainer(Sequence[_T]):
def __repr__(self) -> str: ...
def sort(self, *, key: Optional[Callable[[_T], Any]] = ..., reverse: bool = ...) -> None: ...
@overload
def __getitem__(self, key: int) -> _T: ...
def __getitem__(self, key: SupportsIndex) -> _T: ...
@overload
def __getitem__(self, key: slice) -> List[_T]: ...