.. highlight:: c .. _picklebuffer-objects: .. index:: pair: object; PickleBuffer Pickle buffer objects --------------------- .. versionadded:: 3.8 A :class:`pickle.PickleBuffer` object wraps a :ref:`buffer-providing object ` for out-of-band data transfer with the :mod:`pickle` module. .. c:var:: PyTypeObject PyPickleBuffer_Type This instance of :c:type:`PyTypeObject` represents the Python pickle buffer type. This is the same object as :class:`pickle.PickleBuffer` in the Python layer. .. c:function:: int PyPickleBuffer_Check(PyObject *op) Return true if *op* is a pickle buffer instance. This function always succeeds. .. c:function:: PyObject *PyPickleBuffer_FromObject(PyObject *obj) Create a pickle buffer from the object *obj*. This function will fail if *obj* doesn't support the :ref:`buffer protocol `. On success, return a new pickle buffer instance. On failure, set an exception and return ``NULL``. Analogous to calling :class:`pickle.PickleBuffer` with *obj* in Python. .. c:function:: const Py_buffer *PyPickleBuffer_GetBuffer(PyObject *picklebuf) Get a pointer to the underlying :c:type:`Py_buffer` that the pickle buffer wraps. The returned pointer is valid as long as *picklebuf* is alive and has not been released. The caller must not modify or free the returned :c:type:`Py_buffer`. If the pickle buffer has been released, raise :exc:`ValueError`. On success, return a pointer to the buffer view. On failure, set an exception and return ``NULL``. .. c:function:: int PyPickleBuffer_Release(PyObject *picklebuf) Release the underlying buffer held by the pickle buffer. Return ``0`` on success. On failure, set an exception and return ``-1``. Analogous to calling :meth:`pickle.PickleBuffer.release` in Python.