gh-85275: Remove old buffer APIs#105137
Conversation
Doc/whatsnew/3.13.rst
Outdated
|
|
||
| * ``PyObject_AsCharBuffer()``, ``PyObject_AsReadBuffer()``, ``PyObject_CheckReadBuffer()``, | ||
| and ``PyObject_AsWriteBuffer()`` are removed. Please migrate to new buffer protocol; | ||
| :c:func:`PyObject_GetBuffer` and :c:func:`PyBuffer_Release`. |
There was a problem hiding this comment.
Would it be possible to elaborate how to replace the 3 "As" functions with PyObject_GetBuffer() flags? I'm not used this Py_buffer API. AsCharBuffer() use const char ** type and AsReadBuffer() use const void **buffer type: constant. But PyBuffer.buf type is void*, it's mutable. Maybe add a note about casting if needed? Or provide a full recipe. I don't know.
How do you replace buffer_len? Is it Py_buffer.len or Py_buffer.itemsize? It's a honest question, I don't know the answer :-(
You may also mention that PyObject_CheckReadBuffer() ignores any kind of exception, whereas PyObject_GetBuffer() can raise different exceptions. What is the expected exception if a type doesn't support the buffer protocol?
vstinner
left a comment
There was a problem hiding this comment.
LGTM, thanks. Let's try again to remove them in Python 3.13.
Co-authored-by: Victor Stinner <vstinner@python.org>
|
Nice. Let's see how it goes now :-) |
They are now ABI only.
📚 Documentation preview 📚: https://cpython-previews--105137.org.readthedocs.build/