mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-08 04:54:47 +08:00
Improve stubs for sequence types (#6386)
This commit is contained in:
@@ -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: ...
|
||||
|
||||
@@ -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]: ...
|
||||
|
||||
@@ -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: ...
|
||||
|
||||
@@ -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]: ...
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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: ...
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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: ...
|
||||
|
||||
@@ -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]: ...
|
||||
|
||||
|
||||
Reference in New Issue
Block a user