From d576640f20063e35d7e74878c0da4f32db90eb54 Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Sun, 13 Oct 2024 16:27:39 -0700 Subject: [PATCH 1/2] Revert "`memoryview`: remove inheritance from `Sequence` (#12781)" This reverts commit f625e92ae5e5c5f3a62a02fc814c4bfb6cc197a1. --- stdlib/builtins.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index 63c53a5f6201..91e56c0d7859 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -834,7 +834,7 @@ _IntegerFormats: TypeAlias = Literal[ ] @final -class memoryview(Generic[_I]): +class memoryview(Sequence[_I]): @property def format(self) -> str: ... @property From 6658f10ba9d931fc48b4a3c09ae19cd6f3707d57 Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Wed, 16 Oct 2024 07:09:19 -0700 Subject: [PATCH 2/2] None out index and count --- stdlib/@tests/test_cases/builtins/check_memoryview.py | 3 +++ stdlib/builtins.pyi | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/stdlib/@tests/test_cases/builtins/check_memoryview.py b/stdlib/@tests/test_cases/builtins/check_memoryview.py index 108fc8395cc7..9bcec4e5fb7f 100644 --- a/stdlib/@tests/test_cases/builtins/check_memoryview.py +++ b/stdlib/@tests/test_cases/builtins/check_memoryview.py @@ -56,3 +56,6 @@ # An invalid literal should raise an error. mv = memoryview(b"abc") mv.cast("abc") # type: ignore + +mv.index(42) # type: ignore +mv.count(42) # type: ignore diff --git a/stdlib/builtins.pyi b/stdlib/builtins.pyi index 91e56c0d7859..8a4a9829c892 100644 --- a/stdlib/builtins.pyi +++ b/stdlib/builtins.pyi @@ -897,6 +897,11 @@ class memoryview(Sequence[_I]): def __buffer__(self, flags: int, /) -> memoryview: ... def __release_buffer__(self, buffer: memoryview, /) -> None: ... + # These are inherited from the Sequence ABC, but don't actually exist on memoryview. + # See https://github.com/python/cpython/issues/125420 + index: ClassVar[None] # type: ignore[assignment] + count: ClassVar[None] # type: ignore[assignment] + @final class bool(int): def __new__(cls, o: object = ..., /) -> Self: ...