[Python-checkins] gh-98410: move getbufferproc and releasebufferproc to buffer.h (#31158)

encukou webhook-mailer at python.org
Mon Oct 31 10:02:06 EDT 2022


https://github.com/python/cpython/commit/e98923c0be644c474ce0e318d40e0595e4484106
commit: e98923c0be644c474ce0e318d40e0595e4484106
branch: main
author: David Hewitt <1939362+davidhewitt at users.noreply.github.com>
committer: encukou <encukou at gmail.com>
date: 2022-10-31T15:01:32+01:00
summary:

gh-98410: move getbufferproc and releasebufferproc to buffer.h (#31158)

This adds them to the Limited API.

files:
A Misc/NEWS.d/next/C API/2022-10-25-17-50-43.gh-issue-98410.NSXYfm.rst
M Doc/data/stable_abi.dat
M Include/cpython/object.h
M Include/pybuffer.h
M Misc/stable_abi.toml

diff --git a/Doc/data/stable_abi.dat b/Doc/data/stable_abi.dat
index 133658491c5a..db8fc15d93d1 100644
--- a/Doc/data/stable_abi.dat
+++ b/Doc/data/stable_abi.dat
@@ -865,6 +865,7 @@ type,descrsetfunc,3.2,,
 type,destructor,3.2,,
 type,getattrfunc,3.2,,
 type,getattrofunc,3.2,,
+type,getbufferproc,3.12,,
 type,getiterfunc,3.2,,
 type,getter,3.2,,
 type,hashfunc,3.2,,
@@ -875,6 +876,7 @@ type,lenfunc,3.2,,
 type,newfunc,3.2,,
 type,objobjargproc,3.2,,
 type,objobjproc,3.2,,
+type,releasebufferproc,3.12,,
 type,reprfunc,3.2,,
 type,richcmpfunc,3.2,,
 type,setattrfunc,3.2,,
diff --git a/Include/cpython/object.h b/Include/cpython/object.h
index 900b52321dff..fa0cfb244849 100644
--- a/Include/cpython/object.h
+++ b/Include/cpython/object.h
@@ -51,10 +51,6 @@ typedef struct _Py_Identifier {
 
 #endif  /* NEEDS_PY_IDENTIFIER */
 
-typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
-typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
-
-
 typedef struct {
     /* Number implementations must check *both*
        arguments for proper type and implement the necessary conversions
diff --git a/Include/pybuffer.h b/Include/pybuffer.h
index 6893505e66e3..bbac60972f51 100644
--- a/Include/pybuffer.h
+++ b/Include/pybuffer.h
@@ -32,6 +32,9 @@ typedef struct {
     void *internal;
 } Py_buffer;
 
+typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+
 /* Return 1 if the getbuffer function is available, otherwise return 0. */
 PyAPI_FUNC(int) PyObject_CheckBuffer(PyObject *obj);
 
diff --git a/Misc/NEWS.d/next/C API/2022-10-25-17-50-43.gh-issue-98410.NSXYfm.rst b/Misc/NEWS.d/next/C API/2022-10-25-17-50-43.gh-issue-98410.NSXYfm.rst
new file mode 100644
index 000000000000..d98bc4e81031
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2022-10-25-17-50-43.gh-issue-98410.NSXYfm.rst	
@@ -0,0 +1 @@
+Add ``getbufferproc`` and ``releasebufferproc`` to the stable API.
diff --git a/Misc/stable_abi.toml b/Misc/stable_abi.toml
index e18a6e8f6a9c..0ba0f51b2de4 100644
--- a/Misc/stable_abi.toml
+++ b/Misc/stable_abi.toml
@@ -2299,3 +2299,7 @@
     added = '3.12'
 [macro.PY_VECTORCALL_ARGUMENTS_OFFSET]
     added = '3.12'
+[typedef.getbufferproc]
+    added = '3.12'
+[typedef.releasebufferproc]
+    added = '3.12'



More information about the Python-checkins mailing list