From a198d17434e2d39fd5fde6fc99cdfc52661e4b56 Mon Sep 17 00:00:00 2001 From: Andrew Stitcher Date: Fri, 1 Aug 2025 13:08:59 -0400 Subject: [PATCH 1/2] Make FFI.buffer actually implement buffer protocol --- stubs/cffi/_cffi_backend.pyi | 1 + 1 file changed, 1 insertion(+) diff --git a/stubs/cffi/_cffi_backend.pyi b/stubs/cffi/_cffi_backend.pyi index 850b66706340..5b74fc7fe2a8 100644 --- a/stubs/cffi/_cffi_backend.pyi +++ b/stubs/cffi/_cffi_backend.pyi @@ -90,6 +90,7 @@ class _CDataBase: class buffer: __hash__: ClassVar[None] # type: ignore[assignment] def __init__(self, *args, **kwargs) -> None: ... + def __buffer__(self, flags: int) -> memoryview: ... def __delitem__(self, other) -> None: ... def __eq__(self, other): ... def __ge__(self, other): ... From efca589aff61a6db5131ed4a3df320b6980230fc Mon Sep 17 00:00:00 2001 From: Andrew Stitcher Date: Mon, 4 Aug 2025 17:27:14 -0400 Subject: [PATCH 2/2] Updated cffi _cffi_backed.buffer to notate positional only parameters --- stubs/cffi/_cffi_backend.pyi | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/stubs/cffi/_cffi_backend.pyi b/stubs/cffi/_cffi_backend.pyi index 5b74fc7fe2a8..b063e9bc8378 100644 --- a/stubs/cffi/_cffi_backend.pyi +++ b/stubs/cffi/_cffi_backend.pyi @@ -90,17 +90,17 @@ class _CDataBase: class buffer: __hash__: ClassVar[None] # type: ignore[assignment] def __init__(self, *args, **kwargs) -> None: ... - def __buffer__(self, flags: int) -> memoryview: ... - def __delitem__(self, other) -> None: ... - def __eq__(self, other): ... - def __ge__(self, other): ... - def __getitem__(self, index): ... - def __gt__(self, other): ... - def __le__(self, other): ... + def __buffer__(self, flags: int, /) -> memoryview: ... + def __delitem__(self, other, /) -> None: ... + def __eq__(self, other, /): ... + def __ge__(self, other, /): ... + def __getitem__(self, index, /): ... + def __gt__(self, other, /): ... + def __le__(self, other, /): ... def __len__(self) -> int: ... - def __lt__(self, other): ... - def __ne__(self, other): ... - def __setitem__(self, index, object) -> None: ... + def __lt__(self, other, /): ... + def __ne__(self, other, /): ... + def __setitem__(self, index, object, /) -> None: ... # These aliases are to work around pyright complaints. # Pyright doesn't like it when a class object is defined as an alias