Specialize plain slice type hints (#13007)

This commit is contained in:
Randolf Scholz
2026-01-23 10:35:39 +01:00
committed by GitHub
parent 2ff920f291
commit 5c49b1fe49
15 changed files with 69 additions and 69 deletions
+13 -13
View File
@@ -633,9 +633,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 | slice[SupportsIndex | None], /) -> LiteralString: ...
@overload
def __getitem__(self, key: SupportsIndex | slice, /) -> str: ... # type: ignore[misc]
def __getitem__(self, key: SupportsIndex | slice[SupportsIndex | None], /) -> str: ... # type: ignore[misc]
def __gt__(self, value: str, /) -> bool: ...
def __hash__(self) -> int: ...
@overload
@@ -746,7 +746,7 @@ class bytes(Sequence[int]):
@overload
def __getitem__(self, key: SupportsIndex, /) -> int: ...
@overload
def __getitem__(self, key: slice, /) -> bytes: ...
def __getitem__(self, key: slice[SupportsIndex | None], /) -> bytes: ...
def __add__(self, value: ReadableBuffer, /) -> bytes: ...
def __mul__(self, value: SupportsIndex, /) -> bytes: ...
def __rmul__(self, value: SupportsIndex, /) -> bytes: ...
@@ -856,12 +856,12 @@ class bytearray(MutableSequence[int]):
@overload
def __getitem__(self, key: SupportsIndex, /) -> int: ...
@overload
def __getitem__(self, key: slice, /) -> bytearray: ...
def __getitem__(self, key: slice[SupportsIndex | None], /) -> 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: slice[SupportsIndex | None], value: Iterable[SupportsIndex] | bytes, /) -> None: ...
def __delitem__(self, key: SupportsIndex | slice[SupportsIndex | None], /) -> 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]
@@ -933,14 +933,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: slice[SupportsIndex | None], /) -> 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: slice[SupportsIndex | None], value: ReadableBuffer, /) -> None: ...
@overload
def __setitem__(self, key: SupportsIndex | tuple[SupportsIndex, ...], value: _I, /) -> None: ...
if sys.version_info >= (3, 10):
@@ -1047,7 +1047,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: slice[SupportsIndex | None], /) -> 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: ...
@@ -1147,12 +1147,12 @@ class list(MutableSequence[_T]):
@overload
def __getitem__(self, i: SupportsIndex, /) -> _T: ...
@overload
def __getitem__(self, s: slice, /) -> list[_T]: ...
def __getitem__(self, s: slice[SupportsIndex | None], /) -> 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: slice[SupportsIndex | None], value: Iterable[_T], /) -> None: ...
def __delitem__(self, key: SupportsIndex | slice[SupportsIndex | None], /) -> None: ...
# Overloading looks unnecessary, but is needed to work around complex mypy problems
@overload
def __add__(self, value: list[_T], /) -> list[_T]: ...
@@ -1352,7 +1352,7 @@ class range(Sequence[int]):
@overload
def __getitem__(self, key: SupportsIndex, /) -> int: ...
@overload
def __getitem__(self, key: slice, /) -> range: ...
def __getitem__(self, key: slice[SupportsIndex | None], /) -> range: ...
def __reversed__(self) -> Iterator[int]: ...
@disjoint_base