From 4286a65eccf6014609574f3d9e7982874295802c Mon Sep 17 00:00:00 2001 From: Randolf Scholz Date: Wed, 13 Nov 2024 12:20:57 +0100 Subject: [PATCH] replace slice with IndexSlice --- stdlib/_ctypes.pyi | 8 ++++---- stdlib/_operator.pyi | 8 ++++---- stdlib/_typeshed/__init__.pyi | 7 +++++-- stdlib/array.pyi | 8 ++++---- stdlib/builtins.pyi | 27 ++++++++++++++------------- stdlib/collections/__init__.pyi | 10 +++++----- stdlib/typing.pyi | 10 +++++----- 7 files changed, 41 insertions(+), 37 deletions(-) diff --git a/stdlib/_ctypes.pyi b/stdlib/_ctypes.pyi index f4d26d05323a..8b6b96f7969c 100644 --- a/stdlib/_ctypes.pyi +++ b/stdlib/_ctypes.pyi @@ -1,5 +1,5 @@ import sys -from _typeshed import ReadableBuffer, WriteableBuffer +from _typeshed import IndexSlice, ReadableBuffer, WriteableBuffer from abc import abstractmethod from collections.abc import Callable, Iterable, Iterator, Mapping, Sequence from ctypes import CDLL, ArgumentError as ArgumentError, c_void_p @@ -96,7 +96,7 @@ class _Pointer(_PointerLike, _CData, Generic[_CT]): @overload def __getitem__(self, key: int, /) -> Any: ... @overload - def __getitem__(self, key: slice, /) -> list[Any]: ... + def __getitem__(self, key: IndexSlice, /) -> list[Any]: ... def __setitem__(self, key: int, value: Any, /) -> None: ... @overload @@ -193,11 +193,11 @@ class Array(_CData, Generic[_CT]): @overload def __getitem__(self, key: int, /) -> Any: ... @overload - def __getitem__(self, key: slice, /) -> list[Any]: ... + def __getitem__(self, key: IndexSlice, /) -> list[Any]: ... @overload def __setitem__(self, key: int, value: Any, /) -> None: ... @overload - def __setitem__(self, key: slice, value: Iterable[Any], /) -> None: ... + def __setitem__(self, key: IndexSlice, value: Iterable[Any], /) -> None: ... def __iter__(self) -> Iterator[Any]: ... # Can't inherit from Sized because the metaclass conflict between # Sized and _CData prevents using _CDataMeta. diff --git a/stdlib/_operator.pyi b/stdlib/_operator.pyi index 967215d8fa21..e72922976521 100644 --- a/stdlib/_operator.pyi +++ b/stdlib/_operator.pyi @@ -1,5 +1,5 @@ import sys -from _typeshed import SupportsGetItem +from _typeshed import IndexSlice, SupportsGetItem from collections.abc import Callable, Container, Iterable, MutableMapping, MutableSequence, Sequence from operator import attrgetter as attrgetter, itemgetter as itemgetter, methodcaller as methodcaller from typing import Any, AnyStr, Protocol, SupportsAbs, SupportsIndex, TypeVar, overload @@ -75,18 +75,18 @@ def countOf(a: Iterable[object], b: object, /) -> int: ... @overload def delitem(a: MutableSequence[Any], b: SupportsIndex, /) -> None: ... @overload -def delitem(a: MutableSequence[Any], b: slice, /) -> None: ... +def delitem(a: MutableSequence[Any], b: IndexSlice, /) -> None: ... @overload def delitem(a: MutableMapping[_K, Any], b: _K, /) -> None: ... @overload -def getitem(a: Sequence[_T], b: slice, /) -> Sequence[_T]: ... +def getitem(a: Sequence[_T], b: IndexSlice, /) -> Sequence[_T]: ... @overload def getitem(a: SupportsGetItem[_K, _V], b: _K, /) -> _V: ... def indexOf(a: Iterable[_T], b: _T, /) -> int: ... @overload def setitem(a: MutableSequence[_T], b: SupportsIndex, c: _T, /) -> None: ... @overload -def setitem(a: MutableSequence[_T], b: slice, c: Sequence[_T], /) -> None: ... +def setitem(a: MutableSequence[_T], b: IndexSlice, c: Sequence[_T], /) -> None: ... @overload def setitem(a: MutableMapping[_K, _V], b: _K, c: _V, /) -> None: ... def length_hint(obj: object, default: int = 0, /) -> int: ... diff --git a/stdlib/_typeshed/__init__.pyi b/stdlib/_typeshed/__init__.pyi index 7201819b25ed..28844f209446 100644 --- a/stdlib/_typeshed/__init__.pyi +++ b/stdlib/_typeshed/__init__.pyi @@ -70,6 +70,9 @@ MaybeNone: TypeAlias = Any # stable # def foo(x: int | None | _SentinelType = ...) -> None: ... sentinel: Any +IndexSlice: TypeAlias = slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None] +IntSlice: TypeAlias = slice[int | None, int | None, int | None] + # stable class IdentityFunction(Protocol): def __call__(self, x: _T, /) -> _T: ... @@ -281,7 +284,7 @@ WriteableBuffer: TypeAlias = Buffer ReadableBuffer: TypeAlias = Buffer # stable class SliceableBuffer(Buffer, Protocol): - def __getitem__(self, slice: slice, /) -> Sequence[int]: ... + def __getitem__(self, slice: IndexSlice, /) -> Sequence[int]: ... class IndexableBuffer(Buffer, Protocol): def __getitem__(self, i: int, /) -> int: ... @@ -289,7 +292,7 @@ class IndexableBuffer(Buffer, Protocol): class SupportsGetItemBuffer(SliceableBuffer, IndexableBuffer, Protocol): def __contains__(self, x: Any, /) -> bool: ... @overload - def __getitem__(self, slice: slice, /) -> Sequence[int]: ... + def __getitem__(self, slice: IndexSlice, /) -> Sequence[int]: ... @overload def __getitem__(self, i: int, /) -> int: ... diff --git a/stdlib/array.pyi b/stdlib/array.pyi index 878d8d8cb808..6e63a14d6eac 100644 --- a/stdlib/array.pyi +++ b/stdlib/array.pyi @@ -1,5 +1,5 @@ import sys -from _typeshed import ReadableBuffer, SupportsRead, SupportsWrite +from _typeshed import IndexSlice, ReadableBuffer, SupportsRead, SupportsWrite from collections.abc import Iterable # pytype crashes if array inherits from collections.abc.MutableSequence instead of typing.MutableSequence @@ -66,12 +66,12 @@ class array(MutableSequence[_T]): @overload def __getitem__(self, key: SupportsIndex, /) -> _T: ... @overload - def __getitem__(self, key: slice, /) -> array[_T]: ... + def __getitem__(self, key: IndexSlice, /) -> array[_T]: ... @overload # type: ignore[override] def __setitem__(self, key: SupportsIndex, value: _T, /) -> None: ... @overload - def __setitem__(self, key: slice, value: array[_T], /) -> None: ... - def __delitem__(self, key: SupportsIndex | slice, /) -> None: ... + def __setitem__(self, key: IndexSlice, value: array[_T], /) -> None: ... + def __delitem__(self, key: SupportsIndex | IndexSlice, /) -> None: ... def __add__(self, value: array[_T], /) -> array[_T]: ... def __eq__(self, value: object, /) -> bool: ... def __ge__(self, value: array[_T], /) -> bool: ... diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index 14ad7ebaf601..44b303d578a5 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -9,6 +9,7 @@ from _typeshed import ( ConvertibleToFloat, ConvertibleToInt, FileDescriptorOrPath, + IndexSlice, MaybeNone, OpenBinaryMode, OpenBinaryModeReading, @@ -594,9 +595,9 @@ class str(Sequence[str]): def __eq__(self, value: object, /) -> bool: ... def __ge__(self, value: str, /) -> bool: ... @overload - def __getitem__(self: LiteralString, key: SupportsIndex | slice, /) -> LiteralString: ... + def __getitem__(self: LiteralString, key: SupportsIndex | IndexSlice, /) -> LiteralString: ... @overload - def __getitem__(self, key: SupportsIndex | slice, /) -> str: ... # type: ignore[misc] + def __getitem__(self, key: SupportsIndex | IndexSlice, /) -> str: ... # type: ignore[misc] def __gt__(self, value: str, /) -> bool: ... def __hash__(self) -> int: ... @overload @@ -702,7 +703,7 @@ class bytes(Sequence[int]): @overload def __getitem__(self, key: SupportsIndex, /) -> int: ... @overload - def __getitem__(self, key: slice, /) -> bytes: ... + def __getitem__(self, key: IndexSlice, /) -> bytes: ... def __add__(self, value: ReadableBuffer, /) -> bytes: ... def __mul__(self, value: SupportsIndex, /) -> bytes: ... def __rmul__(self, value: SupportsIndex, /) -> bytes: ... @@ -808,12 +809,12 @@ class bytearray(MutableSequence[int]): @overload def __getitem__(self, key: SupportsIndex, /) -> int: ... @overload - def __getitem__(self, key: slice, /) -> bytearray: ... + def __getitem__(self, key: IndexSlice, /) -> bytearray: ... @overload def __setitem__(self, key: SupportsIndex, value: SupportsIndex, /) -> None: ... @overload - def __setitem__(self, key: slice, value: Iterable[SupportsIndex] | bytes, /) -> None: ... - def __delitem__(self, key: SupportsIndex | slice, /) -> None: ... + def __setitem__(self, key: IndexSlice, value: Iterable[SupportsIndex] | bytes, /) -> None: ... + def __delitem__(self, key: SupportsIndex | IndexSlice, /) -> None: ... def __add__(self, value: ReadableBuffer, /) -> bytearray: ... # The superclass wants us to accept Iterable[int], but that fails at runtime. def __iadd__(self, value: ReadableBuffer, /) -> Self: ... # type: ignore[override] @@ -879,14 +880,14 @@ class memoryview(Sequence[_I]): @overload def __getitem__(self, key: SupportsIndex | tuple[SupportsIndex, ...], /) -> _I: ... @overload - def __getitem__(self, key: slice, /) -> memoryview[_I]: ... + def __getitem__(self, key: IndexSlice, /) -> memoryview[_I]: ... def __contains__(self, x: object, /) -> bool: ... def __iter__(self) -> Iterator[_I]: ... def __len__(self) -> int: ... def __eq__(self, value: object, /) -> bool: ... def __hash__(self) -> int: ... @overload - def __setitem__(self, key: slice, value: ReadableBuffer, /) -> None: ... + def __setitem__(self, key: IndexSlice, value: ReadableBuffer, /) -> None: ... @overload def __setitem__(self, key: SupportsIndex | tuple[SupportsIndex, ...], value: _I, /) -> None: ... if sys.version_info >= (3, 10): @@ -974,7 +975,7 @@ class tuple(Sequence[_T_co]): @overload def __getitem__(self, key: SupportsIndex, /) -> _T_co: ... @overload - def __getitem__(self, key: slice, /) -> tuple[_T_co, ...]: ... + def __getitem__(self, key: IndexSlice, /) -> tuple[_T_co, ...]: ... def __iter__(self) -> Iterator[_T_co]: ... def __lt__(self, value: tuple[_T_co, ...], /) -> bool: ... def __le__(self, value: tuple[_T_co, ...], /) -> bool: ... @@ -1051,12 +1052,12 @@ class list(MutableSequence[_T]): @overload def __getitem__(self, i: SupportsIndex, /) -> _T: ... @overload - def __getitem__(self, s: slice, /) -> list[_T]: ... + def __getitem__(self, s: IndexSlice, /) -> list[_T]: ... @overload def __setitem__(self, key: SupportsIndex, value: _T, /) -> None: ... @overload - def __setitem__(self, key: slice, value: Iterable[_T], /) -> None: ... - def __delitem__(self, key: SupportsIndex | slice, /) -> None: ... + def __setitem__(self, key: IndexSlice, value: Iterable[_T], /) -> None: ... + def __delitem__(self, key: SupportsIndex | IndexSlice, /) -> None: ... # Overloading looks unnecessary, but is needed to work around complex mypy problems @overload def __add__(self, value: list[_T], /) -> list[_T]: ... @@ -1257,7 +1258,7 @@ class range(Sequence[int]): @overload def __getitem__(self, key: SupportsIndex, /) -> int: ... @overload - def __getitem__(self, key: slice, /) -> range: ... + def __getitem__(self, key: IndexSlice, /) -> range: ... def __reversed__(self) -> Iterator[int]: ... class property: diff --git a/stdlib/collections/__init__.pyi b/stdlib/collections/__init__.pyi index 2d136318813c..2164aa25adea 100644 --- a/stdlib/collections/__init__.pyi +++ b/stdlib/collections/__init__.pyi @@ -1,6 +1,6 @@ import sys from _collections_abc import dict_items, dict_keys, dict_values -from _typeshed import SupportsItems, SupportsKeysAndGetItem, SupportsRichComparison, SupportsRichComparisonT +from _typeshed import IndexSlice, SupportsItems, SupportsKeysAndGetItem, SupportsRichComparison, SupportsRichComparisonT from typing import Any, Generic, NoReturn, SupportsIndex, TypeVar, final, overload from typing_extensions import Self @@ -129,12 +129,12 @@ class UserList(MutableSequence[_T]): @overload def __getitem__(self, i: SupportsIndex) -> _T: ... @overload - def __getitem__(self, i: slice) -> Self: ... + def __getitem__(self, i: IndexSlice) -> Self: ... @overload def __setitem__(self, i: SupportsIndex, item: _T) -> None: ... @overload - def __setitem__(self, i: slice, item: Iterable[_T]) -> None: ... - def __delitem__(self, i: SupportsIndex | slice) -> None: ... + def __setitem__(self, i: IndexSlice, item: Iterable[_T]) -> None: ... + def __delitem__(self, i: SupportsIndex | IndexSlice) -> None: ... def __add__(self, other: Iterable[_T]) -> Self: ... def __radd__(self, other: Iterable[_T]) -> Self: ... def __iadd__(self, other: Iterable[_T]) -> Self: ... @@ -174,7 +174,7 @@ class UserString(Sequence[UserString]): def __hash__(self) -> int: ... def __contains__(self, char: object) -> bool: ... def __len__(self) -> int: ... - def __getitem__(self, index: SupportsIndex | slice) -> Self: ... + def __getitem__(self, index: SupportsIndex | IndexSlice) -> Self: ... def __iter__(self) -> Iterator[Self]: ... def __reversed__(self) -> Iterator[Self]: ... def __add__(self, other: object) -> Self: ... diff --git a/stdlib/typing.pyi b/stdlib/typing.pyi index 27ae11daba70..278aa7accc28 100644 --- a/stdlib/typing.pyi +++ b/stdlib/typing.pyi @@ -6,7 +6,7 @@ import collections # noqa: F401 # pyright: ignore[reportUnusedImport] import sys import typing_extensions from _collections_abc import dict_items, dict_keys, dict_values -from _typeshed import IdentityFunction, ReadableBuffer, SupportsKeysAndGetItem +from _typeshed import IdentityFunction, IndexSlice, ReadableBuffer, SupportsKeysAndGetItem from abc import ABCMeta, abstractmethod from re import Match as Match, Pattern as Pattern from types import ( @@ -581,7 +581,7 @@ class Sequence(Reversible[_T_co], Collection[_T_co]): def __getitem__(self, index: int) -> _T_co: ... @overload @abstractmethod - def __getitem__(self, index: slice) -> Sequence[_T_co]: ... + def __getitem__(self, index: IndexSlice) -> Sequence[_T_co]: ... # Mixin methods def index(self, value: Any, start: int = 0, stop: int = ...) -> int: ... def count(self, value: Any) -> int: ... @@ -597,19 +597,19 @@ class MutableSequence(Sequence[_T]): def __getitem__(self, index: int) -> _T: ... @overload @abstractmethod - def __getitem__(self, index: slice) -> MutableSequence[_T]: ... + def __getitem__(self, index: IndexSlice) -> MutableSequence[_T]: ... @overload @abstractmethod def __setitem__(self, index: int, value: _T) -> None: ... @overload @abstractmethod - def __setitem__(self, index: slice, value: Iterable[_T]) -> None: ... + def __setitem__(self, index: IndexSlice, value: Iterable[_T]) -> None: ... @overload @abstractmethod def __delitem__(self, index: int) -> None: ... @overload @abstractmethod - def __delitem__(self, index: slice) -> None: ... + def __delitem__(self, index: IndexSlice) -> None: ... # Mixin methods def append(self, value: _T) -> None: ... def clear(self) -> None: ...