bpo-40204, doc: Fix syntax of C variables (GH-21846)
For example, fix the following Sphinx 3 errors: Doc/c-api/buffer.rst:102: WARNING: Error in declarator or parameters Invalid C declaration: Expected identifier in nested name. [error at 5] void \*obj -----^ Doc/c-api/arg.rst:130: WARNING: Unparseable C cross-reference: 'PyObject*' Invalid C declaration: Expected end of definition. [error at 8] PyObject* --------^ The modified documentation is compatible with Sphinx 2 and Sphinx 3.
This commit is contained in:
parent
0eb9deb4a6
commit
474652fe93
|
@ -129,12 +129,12 @@ which disallows mutable objects such as :class:`bytearray`.
|
||||||
``S`` (:class:`bytes`) [PyBytesObject \*]
|
``S`` (:class:`bytes`) [PyBytesObject \*]
|
||||||
Requires that the Python object is a :class:`bytes` object, without
|
Requires that the Python object is a :class:`bytes` object, without
|
||||||
attempting any conversion. Raises :exc:`TypeError` if the object is not
|
attempting any conversion. Raises :exc:`TypeError` if the object is not
|
||||||
a bytes object. The C variable may also be declared as :c:type:`PyObject\*`.
|
a bytes object. The C variable may also be declared as :c:type:`PyObject*`.
|
||||||
|
|
||||||
``Y`` (:class:`bytearray`) [PyByteArrayObject \*]
|
``Y`` (:class:`bytearray`) [PyByteArrayObject \*]
|
||||||
Requires that the Python object is a :class:`bytearray` object, without
|
Requires that the Python object is a :class:`bytearray` object, without
|
||||||
attempting any conversion. Raises :exc:`TypeError` if the object is not
|
attempting any conversion. Raises :exc:`TypeError` if the object is not
|
||||||
a :class:`bytearray` object. The C variable may also be declared as :c:type:`PyObject\*`.
|
a :class:`bytearray` object. The C variable may also be declared as :c:type:`PyObject*`.
|
||||||
|
|
||||||
``u`` (:class:`str`) [const Py_UNICODE \*]
|
``u`` (:class:`str`) [const Py_UNICODE \*]
|
||||||
Convert a Python Unicode object to a C pointer to a NUL-terminated buffer of
|
Convert a Python Unicode object to a C pointer to a NUL-terminated buffer of
|
||||||
|
@ -181,7 +181,7 @@ which disallows mutable objects such as :class:`bytearray`.
|
||||||
``U`` (:class:`str`) [PyObject \*]
|
``U`` (:class:`str`) [PyObject \*]
|
||||||
Requires that the Python object is a Unicode object, without attempting
|
Requires that the Python object is a Unicode object, without attempting
|
||||||
any conversion. Raises :exc:`TypeError` if the object is not a Unicode
|
any conversion. Raises :exc:`TypeError` if the object is not a Unicode
|
||||||
object. The C variable may also be declared as :c:type:`PyObject\*`.
|
object. The C variable may also be declared as :c:type:`PyObject*`.
|
||||||
|
|
||||||
``w*`` (read-write :term:`bytes-like object`) [Py_buffer]
|
``w*`` (read-write :term:`bytes-like object`) [Py_buffer]
|
||||||
This format accepts any object which implements the read-write buffer
|
This format accepts any object which implements the read-write buffer
|
||||||
|
@ -194,10 +194,10 @@ which disallows mutable objects such as :class:`bytearray`.
|
||||||
It only works for encoded data without embedded NUL bytes.
|
It only works for encoded data without embedded NUL bytes.
|
||||||
|
|
||||||
This format requires two arguments. The first is only used as input, and
|
This format requires two arguments. The first is only used as input, and
|
||||||
must be a :c:type:`const char\*` which points to the name of an encoding as a
|
must be a :c:type:`const char*` which points to the name of an encoding as a
|
||||||
NUL-terminated string, or ``NULL``, in which case ``'utf-8'`` encoding is used.
|
NUL-terminated string, or ``NULL``, in which case ``'utf-8'`` encoding is used.
|
||||||
An exception is raised if the named encoding is not known to Python. The
|
An exception is raised if the named encoding is not known to Python. The
|
||||||
second argument must be a :c:type:`char\*\*`; the value of the pointer it
|
second argument must be a :c:type:`char**`; the value of the pointer it
|
||||||
references will be set to a buffer with the contents of the argument text.
|
references will be set to a buffer with the contents of the argument text.
|
||||||
The text will be encoded in the encoding specified by the first argument.
|
The text will be encoded in the encoding specified by the first argument.
|
||||||
|
|
||||||
|
@ -217,10 +217,10 @@ which disallows mutable objects such as :class:`bytearray`.
|
||||||
characters.
|
characters.
|
||||||
|
|
||||||
It requires three arguments. The first is only used as input, and must be a
|
It requires three arguments. The first is only used as input, and must be a
|
||||||
:c:type:`const char\*` which points to the name of an encoding as a
|
:c:type:`const char*` which points to the name of an encoding as a
|
||||||
NUL-terminated string, or ``NULL``, in which case ``'utf-8'`` encoding is used.
|
NUL-terminated string, or ``NULL``, in which case ``'utf-8'`` encoding is used.
|
||||||
An exception is raised if the named encoding is not known to Python. The
|
An exception is raised if the named encoding is not known to Python. The
|
||||||
second argument must be a :c:type:`char\*\*`; the value of the pointer it
|
second argument must be a :c:type:`char**`; the value of the pointer it
|
||||||
references will be set to a buffer with the contents of the argument text.
|
references will be set to a buffer with the contents of the argument text.
|
||||||
The text will be encoded in the encoding specified by the first argument.
|
The text will be encoded in the encoding specified by the first argument.
|
||||||
The third argument must be a pointer to an integer; the referenced integer
|
The third argument must be a pointer to an integer; the referenced integer
|
||||||
|
@ -320,7 +320,7 @@ Other objects
|
||||||
``O!`` (object) [*typeobject*, PyObject \*]
|
``O!`` (object) [*typeobject*, PyObject \*]
|
||||||
Store a Python object in a C object pointer. This is similar to ``O``, but
|
Store a Python object in a C object pointer. This is similar to ``O``, but
|
||||||
takes two C arguments: the first is the address of a Python type object, the
|
takes two C arguments: the first is the address of a Python type object, the
|
||||||
second is the address of the C variable (of type :c:type:`PyObject\*`) into which
|
second is the address of the C variable (of type :c:type:`PyObject*`) into which
|
||||||
the object pointer is stored. If the Python object does not have the required
|
the object pointer is stored. If the Python object does not have the required
|
||||||
type, :exc:`TypeError` is raised.
|
type, :exc:`TypeError` is raised.
|
||||||
|
|
||||||
|
@ -329,13 +329,13 @@ Other objects
|
||||||
``O&`` (object) [*converter*, *anything*]
|
``O&`` (object) [*converter*, *anything*]
|
||||||
Convert a Python object to a C variable through a *converter* function. This
|
Convert a Python object to a C variable through a *converter* function. This
|
||||||
takes two arguments: the first is a function, the second is the address of a C
|
takes two arguments: the first is a function, the second is the address of a C
|
||||||
variable (of arbitrary type), converted to :c:type:`void \*`. The *converter*
|
variable (of arbitrary type), converted to :c:type:`void *`. The *converter*
|
||||||
function in turn is called as follows::
|
function in turn is called as follows::
|
||||||
|
|
||||||
status = converter(object, address);
|
status = converter(object, address);
|
||||||
|
|
||||||
where *object* is the Python object to be converted and *address* is the
|
where *object* is the Python object to be converted and *address* is the
|
||||||
:c:type:`void\*` argument that was passed to the :c:func:`PyArg_Parse\*` function.
|
:c:type:`void*` argument that was passed to the :c:func:`PyArg_Parse\*` function.
|
||||||
The returned *status* should be ``1`` for a successful conversion and ``0`` if
|
The returned *status* should be ``1`` for a successful conversion and ``0`` if
|
||||||
the conversion has failed. When the conversion fails, the *converter* function
|
the conversion has failed. When the conversion fails, the *converter* function
|
||||||
should raise an exception and leave the content of *address* unmodified.
|
should raise an exception and leave the content of *address* unmodified.
|
||||||
|
@ -481,7 +481,7 @@ API Functions
|
||||||
*args*; it must actually be a tuple. The length of the tuple must be at least
|
*args*; it must actually be a tuple. The length of the tuple must be at least
|
||||||
*min* and no more than *max*; *min* and *max* may be equal. Additional
|
*min* and no more than *max*; *min* and *max* may be equal. Additional
|
||||||
arguments must be passed to the function, each of which should be a pointer to a
|
arguments must be passed to the function, each of which should be a pointer to a
|
||||||
:c:type:`PyObject\*` variable; these will be filled in with the values from
|
:c:type:`PyObject*` variable; these will be filled in with the values from
|
||||||
*args*; they will contain borrowed references. The variables which correspond
|
*args*; they will contain borrowed references. The variables which correspond
|
||||||
to optional parameters not given by *args* will not be filled in; these should
|
to optional parameters not given by *args* will not be filled in; these should
|
||||||
be initialized by the caller. This function returns true on success and false if
|
be initialized by the caller. This function returns true on success and false if
|
||||||
|
@ -650,8 +650,8 @@ Building values
|
||||||
|
|
||||||
``O&`` (object) [*converter*, *anything*]
|
``O&`` (object) [*converter*, *anything*]
|
||||||
Convert *anything* to a Python object through a *converter* function. The
|
Convert *anything* to a Python object through a *converter* function. The
|
||||||
function is called with *anything* (which should be compatible with :c:type:`void
|
function is called with *anything* (which should be compatible with :c:type:`void*`)
|
||||||
\*`) as its argument and should return a "new" Python object, or ``NULL`` if an
|
as its argument and should return a "new" Python object, or ``NULL`` if an
|
||||||
error occurred.
|
error occurred.
|
||||||
|
|
||||||
``(items)`` (:class:`tuple`) [*matching-items*]
|
``(items)`` (:class:`tuple`) [*matching-items*]
|
||||||
|
|
|
@ -89,7 +89,7 @@ a buffer, see :c:func:`PyObject_GetBuffer`.
|
||||||
|
|
||||||
.. c:type:: Py_buffer
|
.. c:type:: Py_buffer
|
||||||
|
|
||||||
.. c:member:: void \*buf
|
.. c:member:: void *buf
|
||||||
|
|
||||||
A pointer to the start of the logical structure described by the buffer
|
A pointer to the start of the logical structure described by the buffer
|
||||||
fields. This can be any location within the underlying physical memory
|
fields. This can be any location within the underlying physical memory
|
||||||
|
@ -99,7 +99,7 @@ a buffer, see :c:func:`PyObject_GetBuffer`.
|
||||||
For :term:`contiguous` arrays, the value points to the beginning of
|
For :term:`contiguous` arrays, the value points to the beginning of
|
||||||
the memory block.
|
the memory block.
|
||||||
|
|
||||||
.. c:member:: void \*obj
|
.. c:member:: void *obj
|
||||||
|
|
||||||
A new reference to the exporting object. The reference is owned by
|
A new reference to the exporting object. The reference is owned by
|
||||||
the consumer and automatically decremented and set to ``NULL`` by
|
the consumer and automatically decremented and set to ``NULL`` by
|
||||||
|
@ -145,7 +145,7 @@ a buffer, see :c:func:`PyObject_GetBuffer`.
|
||||||
or a :c:macro:`PyBUF_WRITABLE` request, the consumer must disregard
|
or a :c:macro:`PyBUF_WRITABLE` request, the consumer must disregard
|
||||||
:c:member:`~Py_buffer.itemsize` and assume ``itemsize == 1``.
|
:c:member:`~Py_buffer.itemsize` and assume ``itemsize == 1``.
|
||||||
|
|
||||||
.. c:member:: const char \*format
|
.. c:member:: const char *format
|
||||||
|
|
||||||
A *NUL* terminated string in :mod:`struct` module style syntax describing
|
A *NUL* terminated string in :mod:`struct` module style syntax describing
|
||||||
the contents of a single item. If this is ``NULL``, ``"B"`` (unsigned bytes)
|
the contents of a single item. If this is ``NULL``, ``"B"`` (unsigned bytes)
|
||||||
|
@ -164,7 +164,7 @@ a buffer, see :c:func:`PyObject_GetBuffer`.
|
||||||
to 64. Exporters MUST respect this limit, consumers of multi-dimensional
|
to 64. Exporters MUST respect this limit, consumers of multi-dimensional
|
||||||
buffers SHOULD be able to handle up to :c:macro:`PyBUF_MAX_NDIM` dimensions.
|
buffers SHOULD be able to handle up to :c:macro:`PyBUF_MAX_NDIM` dimensions.
|
||||||
|
|
||||||
.. c:member:: Py_ssize_t \*shape
|
.. c:member:: Py_ssize_t *shape
|
||||||
|
|
||||||
An array of :c:type:`Py_ssize_t` of length :c:member:`~Py_buffer.ndim`
|
An array of :c:type:`Py_ssize_t` of length :c:member:`~Py_buffer.ndim`
|
||||||
indicating the shape of the memory as an n-dimensional array. Note that
|
indicating the shape of the memory as an n-dimensional array. Note that
|
||||||
|
@ -177,7 +177,7 @@ a buffer, see :c:func:`PyObject_GetBuffer`.
|
||||||
|
|
||||||
The shape array is read-only for the consumer.
|
The shape array is read-only for the consumer.
|
||||||
|
|
||||||
.. c:member:: Py_ssize_t \*strides
|
.. c:member:: Py_ssize_t *strides
|
||||||
|
|
||||||
An array of :c:type:`Py_ssize_t` of length :c:member:`~Py_buffer.ndim`
|
An array of :c:type:`Py_ssize_t` of length :c:member:`~Py_buffer.ndim`
|
||||||
giving the number of bytes to skip to get to a new element in each
|
giving the number of bytes to skip to get to a new element in each
|
||||||
|
@ -189,7 +189,7 @@ a buffer, see :c:func:`PyObject_GetBuffer`.
|
||||||
|
|
||||||
The strides array is read-only for the consumer.
|
The strides array is read-only for the consumer.
|
||||||
|
|
||||||
.. c:member:: Py_ssize_t \*suboffsets
|
.. c:member:: Py_ssize_t *suboffsets
|
||||||
|
|
||||||
An array of :c:type:`Py_ssize_t` of length :c:member:`~Py_buffer.ndim`.
|
An array of :c:type:`Py_ssize_t` of length :c:member:`~Py_buffer.ndim`.
|
||||||
If ``suboffsets[n] >= 0``, the values stored along the nth dimension are
|
If ``suboffsets[n] >= 0``, the values stored along the nth dimension are
|
||||||
|
@ -207,7 +207,7 @@ a buffer, see :c:func:`PyObject_GetBuffer`.
|
||||||
|
|
||||||
The suboffsets array is read-only for the consumer.
|
The suboffsets array is read-only for the consumer.
|
||||||
|
|
||||||
.. c:member:: void \*internal
|
.. c:member:: void *internal
|
||||||
|
|
||||||
This is for use internally by the exporting object. For example, this
|
This is for use internally by the exporting object. For example, this
|
||||||
might be re-cast as an integer by the exporter and used to store flags
|
might be re-cast as an integer by the exporter and used to store flags
|
||||||
|
@ -438,12 +438,12 @@ Buffer-related functions
|
||||||
|
|
||||||
Send a request to *exporter* to fill in *view* as specified by *flags*.
|
Send a request to *exporter* to fill in *view* as specified by *flags*.
|
||||||
If the exporter cannot provide a buffer of the exact type, it MUST raise
|
If the exporter cannot provide a buffer of the exact type, it MUST raise
|
||||||
:c:data:`PyExc_BufferError`, set :c:member:`view->obj` to ``NULL`` and
|
:c:data:`PyExc_BufferError`, set ``view->obj`` to ``NULL`` and
|
||||||
return ``-1``.
|
return ``-1``.
|
||||||
|
|
||||||
On success, fill in *view*, set :c:member:`view->obj` to a new reference
|
On success, fill in *view*, set ``view->obj`` to a new reference
|
||||||
to *exporter* and return 0. In the case of chained buffer providers
|
to *exporter* and return 0. In the case of chained buffer providers
|
||||||
that redirect requests to a single object, :c:member:`view->obj` MAY
|
that redirect requests to a single object, ``view->obj`` MAY
|
||||||
refer to this object instead of *exporter* (See :ref:`Buffer Object Structures <buffer-structs>`).
|
refer to this object instead of *exporter* (See :ref:`Buffer Object Structures <buffer-structs>`).
|
||||||
|
|
||||||
Successful calls to :c:func:`PyObject_GetBuffer` must be paired with calls
|
Successful calls to :c:func:`PyObject_GetBuffer` must be paired with calls
|
||||||
|
@ -455,7 +455,7 @@ Buffer-related functions
|
||||||
.. c:function:: void PyBuffer_Release(Py_buffer *view)
|
.. c:function:: void PyBuffer_Release(Py_buffer *view)
|
||||||
|
|
||||||
Release the buffer *view* and decrement the reference count for
|
Release the buffer *view* and decrement the reference count for
|
||||||
:c:member:`view->obj`. This function MUST be called when the buffer
|
``view->obj``. This function MUST be called when the buffer
|
||||||
is no longer being used, otherwise reference leaks may occur.
|
is no longer being used, otherwise reference leaks may occur.
|
||||||
|
|
||||||
It is an error to call this function on a buffer that was not obtained via
|
It is an error to call this function on a buffer that was not obtained via
|
||||||
|
@ -516,9 +516,9 @@ Buffer-related functions
|
||||||
*view* as specified by flags, unless *buf* has been designated as read-only
|
*view* as specified by flags, unless *buf* has been designated as read-only
|
||||||
and :c:macro:`PyBUF_WRITABLE` is set in *flags*.
|
and :c:macro:`PyBUF_WRITABLE` is set in *flags*.
|
||||||
|
|
||||||
On success, set :c:member:`view->obj` to a new reference to *exporter* and
|
On success, set ``view->obj`` to a new reference to *exporter* and
|
||||||
return 0. Otherwise, raise :c:data:`PyExc_BufferError`, set
|
return 0. Otherwise, raise :c:data:`PyExc_BufferError`, set
|
||||||
:c:member:`view->obj` to ``NULL`` and return ``-1``;
|
``view->obj`` to ``NULL`` and return ``-1``;
|
||||||
|
|
||||||
If this function is used as part of a :ref:`getbufferproc <buffer-structs>`,
|
If this function is used as part of a :ref:`getbufferproc <buffer-structs>`,
|
||||||
*exporter* MUST be set to the exporting object and *flags* must be passed
|
*exporter* MUST be set to the exporting object and *flags* must be passed
|
||||||
|
|
|
@ -84,7 +84,7 @@ This is a pointer to a function with the following signature:
|
||||||
and they must be unique.
|
and they must be unique.
|
||||||
If there are no keyword arguments, then *kwnames* can instead be *NULL*.
|
If there are no keyword arguments, then *kwnames* can instead be *NULL*.
|
||||||
|
|
||||||
.. c:var:: PY_VECTORCALL_ARGUMENTS_OFFSET
|
.. c:macro:: PY_VECTORCALL_ARGUMENTS_OFFSET
|
||||||
|
|
||||||
If this flag is set in a vectorcall *nargsf* argument, the callee is allowed
|
If this flag is set in a vectorcall *nargsf* argument, the callee is allowed
|
||||||
to temporarily change ``args[-1]``. In other words, *args* points to
|
to temporarily change ``args[-1]``. In other words, *args* points to
|
||||||
|
@ -283,7 +283,7 @@ please see individual documentation for details.
|
||||||
|
|
||||||
This is the equivalent of the Python expression: ``callable(*args)``.
|
This is the equivalent of the Python expression: ``callable(*args)``.
|
||||||
|
|
||||||
Note that if you only pass :c:type:`PyObject \*` args,
|
Note that if you only pass :c:type:`PyObject *` args,
|
||||||
:c:func:`PyObject_CallFunctionObjArgs` is a faster alternative.
|
:c:func:`PyObject_CallFunctionObjArgs` is a faster alternative.
|
||||||
|
|
||||||
.. versionchanged:: 3.4
|
.. versionchanged:: 3.4
|
||||||
|
@ -304,17 +304,17 @@ please see individual documentation for details.
|
||||||
This is the equivalent of the Python expression:
|
This is the equivalent of the Python expression:
|
||||||
``obj.name(arg1, arg2, ...)``.
|
``obj.name(arg1, arg2, ...)``.
|
||||||
|
|
||||||
Note that if you only pass :c:type:`PyObject \*` args,
|
Note that if you only pass :c:type:`PyObject *` args,
|
||||||
:c:func:`PyObject_CallMethodObjArgs` is a faster alternative.
|
:c:func:`PyObject_CallMethodObjArgs` is a faster alternative.
|
||||||
|
|
||||||
.. versionchanged:: 3.4
|
.. versionchanged:: 3.4
|
||||||
The types of *name* and *format* were changed from ``char *``.
|
The types of *name* and *format* were changed from ``char *``.
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ..., NULL)
|
.. c:function:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ...)
|
||||||
|
|
||||||
Call a callable Python object *callable*, with a variable number of
|
Call a callable Python object *callable*, with a variable number of
|
||||||
:c:type:`PyObject \*` arguments. The arguments are provided as a variable number
|
:c:type:`PyObject *` arguments. The arguments are provided as a variable number
|
||||||
of parameters followed by *NULL*.
|
of parameters followed by *NULL*.
|
||||||
|
|
||||||
Return the result of the call on success, or raise an exception and return
|
Return the result of the call on success, or raise an exception and return
|
||||||
|
@ -324,11 +324,11 @@ please see individual documentation for details.
|
||||||
``callable(arg1, arg2, ...)``.
|
``callable(arg1, arg2, ...)``.
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: PyObject* PyObject_CallMethodObjArgs(PyObject *obj, PyObject *name, ..., NULL)
|
.. c:function:: PyObject* PyObject_CallMethodObjArgs(PyObject *obj, PyObject *name, ...)
|
||||||
|
|
||||||
Call a method of the Python object *obj*, where the name of the method is given as a
|
Call a method of the Python object *obj*, where the name of the method is given as a
|
||||||
Python string object in *name*. It is called with a variable number of
|
Python string object in *name*. It is called with a variable number of
|
||||||
:c:type:`PyObject \*` arguments. The arguments are provided as a variable number
|
:c:type:`PyObject *` arguments. The arguments are provided as a variable number
|
||||||
of parameters followed by *NULL*.
|
of parameters followed by *NULL*.
|
||||||
|
|
||||||
Return the result of the call on success, or raise an exception and return
|
Return the result of the call on success, or raise an exception and return
|
||||||
|
|
|
@ -15,7 +15,7 @@ Refer to :ref:`using-capsules` for more information on using these objects.
|
||||||
.. c:type:: PyCapsule
|
.. c:type:: PyCapsule
|
||||||
|
|
||||||
This subtype of :c:type:`PyObject` represents an opaque value, useful for C
|
This subtype of :c:type:`PyObject` represents an opaque value, useful for C
|
||||||
extension modules who need to pass an opaque value (as a :c:type:`void\*`
|
extension modules who need to pass an opaque value (as a :c:type:`void*`
|
||||||
pointer) through Python code to other C code. It is often used to make a C
|
pointer) through Python code to other C code. It is often used to make a C
|
||||||
function pointer defined in one module available to other modules, so the
|
function pointer defined in one module available to other modules, so the
|
||||||
regular import mechanism can be used to access C APIs defined in dynamically
|
regular import mechanism can be used to access C APIs defined in dynamically
|
||||||
|
|
|
@ -73,7 +73,7 @@ Dictionary Objects
|
||||||
.. index:: single: PyUnicode_FromString()
|
.. index:: single: PyUnicode_FromString()
|
||||||
|
|
||||||
Insert *val* into the dictionary *p* using *key* as a key. *key* should
|
Insert *val* into the dictionary *p* using *key* as a key. *key* should
|
||||||
be a :c:type:`const char\*`. The key object is created using
|
be a :c:type:`const char*`. The key object is created using
|
||||||
``PyUnicode_FromString(key)``. Return ``0`` on success or ``-1`` on
|
``PyUnicode_FromString(key)``. Return ``0`` on success or ``-1`` on
|
||||||
failure. This function *does not* steal a reference to *val*.
|
failure. This function *does not* steal a reference to *val*.
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ Dictionary Objects
|
||||||
.. c:function:: PyObject* PyDict_GetItemString(PyObject *p, const char *key)
|
.. c:function:: PyObject* PyDict_GetItemString(PyObject *p, const char *key)
|
||||||
|
|
||||||
This is the same as :c:func:`PyDict_GetItem`, but *key* is specified as a
|
This is the same as :c:func:`PyDict_GetItem`, but *key* is specified as a
|
||||||
:c:type:`const char\*`, rather than a :c:type:`PyObject\*`.
|
:c:type:`const char*`, rather than a :c:type:`PyObject*`.
|
||||||
|
|
||||||
Note that exceptions which occur while calling :meth:`__hash__` and
|
Note that exceptions which occur while calling :meth:`__hash__` and
|
||||||
:meth:`__eq__` methods and creating a temporary string object
|
:meth:`__eq__` methods and creating a temporary string object
|
||||||
|
@ -165,7 +165,7 @@ Dictionary Objects
|
||||||
prior to the first call to this function to start the iteration; the
|
prior to the first call to this function to start the iteration; the
|
||||||
function returns true for each pair in the dictionary, and false once all
|
function returns true for each pair in the dictionary, and false once all
|
||||||
pairs have been reported. The parameters *pkey* and *pvalue* should either
|
pairs have been reported. The parameters *pkey* and *pvalue* should either
|
||||||
point to :c:type:`PyObject\*` variables that will be filled in with each key
|
point to :c:type:`PyObject*` variables that will be filled in with each key
|
||||||
and value, respectively, or may be ``NULL``. Any references returned through
|
and value, respectively, or may be ``NULL``. Any references returned through
|
||||||
them are borrowed. *ppos* should not be altered during iteration. Its
|
them are borrowed. *ppos* should not be altered during iteration. Its
|
||||||
value represents offsets within the internal dictionary structure, and
|
value represents offsets within the internal dictionary structure, and
|
||||||
|
|
|
@ -783,7 +783,7 @@ Standard Exceptions
|
||||||
|
|
||||||
All standard Python exceptions are available as global variables whose names are
|
All standard Python exceptions are available as global variables whose names are
|
||||||
``PyExc_`` followed by the Python exception name. These have the type
|
``PyExc_`` followed by the Python exception name. These have the type
|
||||||
:c:type:`PyObject\*`; they are all class objects. For completeness, here are all
|
:c:type:`PyObject*`; they are all class objects. For completeness, here are all
|
||||||
the variables:
|
the variables:
|
||||||
|
|
||||||
.. index::
|
.. index::
|
||||||
|
@ -1003,7 +1003,7 @@ Standard Warning Categories
|
||||||
|
|
||||||
All standard Python warning categories are available as global variables whose
|
All standard Python warning categories are available as global variables whose
|
||||||
names are ``PyExc_`` followed by the Python exception name. These have the type
|
names are ``PyExc_`` followed by the Python exception name. These have the type
|
||||||
:c:type:`PyObject\*`; they are all class objects. For completeness, here are all
|
:c:type:`PyObject*`; they are all class objects. For completeness, here are all
|
||||||
the variables:
|
the variables:
|
||||||
|
|
||||||
.. index::
|
.. index::
|
||||||
|
|
|
@ -8,7 +8,7 @@ File Objects
|
||||||
.. index:: object: file
|
.. index:: object: file
|
||||||
|
|
||||||
These APIs are a minimal emulation of the Python 2 C API for built-in file
|
These APIs are a minimal emulation of the Python 2 C API for built-in file
|
||||||
objects, which used to rely on the buffered I/O (:c:type:`FILE\*`) support
|
objects, which used to rely on the buffered I/O (:c:type:`FILE*`) support
|
||||||
from the C standard library. In Python 3, files and streams use the new
|
from the C standard library. In Python 3, files and streams use the new
|
||||||
:mod:`io` module, which defines several layers over the low-level unbuffered
|
:mod:`io` module, which defines several layers over the low-level unbuffered
|
||||||
I/O of the operating system. The functions described below are
|
I/O of the operating system. The functions described below are
|
||||||
|
@ -17,7 +17,7 @@ error reporting in the interpreter; third-party code is advised to access
|
||||||
the :mod:`io` APIs instead.
|
the :mod:`io` APIs instead.
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: PyFile_FromFd(int fd, const char *name, const char *mode, int buffering, const char *encoding, const char *errors, const char *newline, int closefd)
|
.. c:function:: PyObject* PyFile_FromFd(int fd, const char *name, const char *mode, int buffering, const char *encoding, const char *errors, const char *newline, int closefd)
|
||||||
|
|
||||||
Create a Python file object from the file descriptor of an already
|
Create a Python file object from the file descriptor of an already
|
||||||
opened file *fd*. The arguments *name*, *encoding*, *errors* and *newline*
|
opened file *fd*. The arguments *name*, *encoding*, *errors* and *newline*
|
||||||
|
|
|
@ -81,7 +81,7 @@ When a flag is set by an option, the value of the flag is the number of times
|
||||||
that the option was set. For example, ``-b`` sets :c:data:`Py_BytesWarningFlag`
|
that the option was set. For example, ``-b`` sets :c:data:`Py_BytesWarningFlag`
|
||||||
to 1 and ``-bb`` sets :c:data:`Py_BytesWarningFlag` to 2.
|
to 1 and ``-bb`` sets :c:data:`Py_BytesWarningFlag` to 2.
|
||||||
|
|
||||||
.. c:var:: Py_BytesWarningFlag
|
.. c:var:: int Py_BytesWarningFlag
|
||||||
|
|
||||||
Issue a warning when comparing :class:`bytes` or :class:`bytearray` with
|
Issue a warning when comparing :class:`bytes` or :class:`bytearray` with
|
||||||
:class:`str` or :class:`bytes` with :class:`int`. Issue an error if greater
|
:class:`str` or :class:`bytes` with :class:`int`. Issue an error if greater
|
||||||
|
@ -89,7 +89,7 @@ to 1 and ``-bb`` sets :c:data:`Py_BytesWarningFlag` to 2.
|
||||||
|
|
||||||
Set by the :option:`-b` option.
|
Set by the :option:`-b` option.
|
||||||
|
|
||||||
.. c:var:: Py_DebugFlag
|
.. c:var:: int Py_DebugFlag
|
||||||
|
|
||||||
Turn on parser debugging output (for expert only, depending on compilation
|
Turn on parser debugging output (for expert only, depending on compilation
|
||||||
options).
|
options).
|
||||||
|
@ -97,7 +97,7 @@ to 1 and ``-bb`` sets :c:data:`Py_BytesWarningFlag` to 2.
|
||||||
Set by the :option:`-d` option and the :envvar:`PYTHONDEBUG` environment
|
Set by the :option:`-d` option and the :envvar:`PYTHONDEBUG` environment
|
||||||
variable.
|
variable.
|
||||||
|
|
||||||
.. c:var:: Py_DontWriteBytecodeFlag
|
.. c:var:: int Py_DontWriteBytecodeFlag
|
||||||
|
|
||||||
If set to non-zero, Python won't try to write ``.pyc`` files on the
|
If set to non-zero, Python won't try to write ``.pyc`` files on the
|
||||||
import of source modules.
|
import of source modules.
|
||||||
|
@ -105,14 +105,14 @@ to 1 and ``-bb`` sets :c:data:`Py_BytesWarningFlag` to 2.
|
||||||
Set by the :option:`-B` option and the :envvar:`PYTHONDONTWRITEBYTECODE`
|
Set by the :option:`-B` option and the :envvar:`PYTHONDONTWRITEBYTECODE`
|
||||||
environment variable.
|
environment variable.
|
||||||
|
|
||||||
.. c:var:: Py_FrozenFlag
|
.. c:var:: int Py_FrozenFlag
|
||||||
|
|
||||||
Suppress error messages when calculating the module search path in
|
Suppress error messages when calculating the module search path in
|
||||||
:c:func:`Py_GetPath`.
|
:c:func:`Py_GetPath`.
|
||||||
|
|
||||||
Private flag used by ``_freeze_importlib`` and ``frozenmain`` programs.
|
Private flag used by ``_freeze_importlib`` and ``frozenmain`` programs.
|
||||||
|
|
||||||
.. c:var:: Py_HashRandomizationFlag
|
.. c:var:: int Py_HashRandomizationFlag
|
||||||
|
|
||||||
Set to ``1`` if the :envvar:`PYTHONHASHSEED` environment variable is set to
|
Set to ``1`` if the :envvar:`PYTHONHASHSEED` environment variable is set to
|
||||||
a non-empty string.
|
a non-empty string.
|
||||||
|
@ -120,14 +120,14 @@ to 1 and ``-bb`` sets :c:data:`Py_BytesWarningFlag` to 2.
|
||||||
If the flag is non-zero, read the :envvar:`PYTHONHASHSEED` environment
|
If the flag is non-zero, read the :envvar:`PYTHONHASHSEED` environment
|
||||||
variable to initialize the secret hash seed.
|
variable to initialize the secret hash seed.
|
||||||
|
|
||||||
.. c:var:: Py_IgnoreEnvironmentFlag
|
.. c:var:: int Py_IgnoreEnvironmentFlag
|
||||||
|
|
||||||
Ignore all :envvar:`PYTHON*` environment variables, e.g.
|
Ignore all :envvar:`PYTHON*` environment variables, e.g.
|
||||||
:envvar:`PYTHONPATH` and :envvar:`PYTHONHOME`, that might be set.
|
:envvar:`PYTHONPATH` and :envvar:`PYTHONHOME`, that might be set.
|
||||||
|
|
||||||
Set by the :option:`-E` and :option:`-I` options.
|
Set by the :option:`-E` and :option:`-I` options.
|
||||||
|
|
||||||
.. c:var:: Py_InspectFlag
|
.. c:var:: int Py_InspectFlag
|
||||||
|
|
||||||
When a script is passed as first argument or the :option:`-c` option is used,
|
When a script is passed as first argument or the :option:`-c` option is used,
|
||||||
enter interactive mode after executing the script or the command, even when
|
enter interactive mode after executing the script or the command, even when
|
||||||
|
@ -136,11 +136,11 @@ to 1 and ``-bb`` sets :c:data:`Py_BytesWarningFlag` to 2.
|
||||||
Set by the :option:`-i` option and the :envvar:`PYTHONINSPECT` environment
|
Set by the :option:`-i` option and the :envvar:`PYTHONINSPECT` environment
|
||||||
variable.
|
variable.
|
||||||
|
|
||||||
.. c:var:: Py_InteractiveFlag
|
.. c:var:: int Py_InteractiveFlag
|
||||||
|
|
||||||
Set by the :option:`-i` option.
|
Set by the :option:`-i` option.
|
||||||
|
|
||||||
.. c:var:: Py_IsolatedFlag
|
.. c:var:: int Py_IsolatedFlag
|
||||||
|
|
||||||
Run Python in isolated mode. In isolated mode :data:`sys.path` contains
|
Run Python in isolated mode. In isolated mode :data:`sys.path` contains
|
||||||
neither the script's directory nor the user's site-packages directory.
|
neither the script's directory nor the user's site-packages directory.
|
||||||
|
@ -149,7 +149,7 @@ to 1 and ``-bb`` sets :c:data:`Py_BytesWarningFlag` to 2.
|
||||||
|
|
||||||
.. versionadded:: 3.4
|
.. versionadded:: 3.4
|
||||||
|
|
||||||
.. c:var:: Py_LegacyWindowsFSEncodingFlag
|
.. c:var:: int Py_LegacyWindowsFSEncodingFlag
|
||||||
|
|
||||||
If the flag is non-zero, use the ``mbcs`` encoding instead of the UTF-8
|
If the flag is non-zero, use the ``mbcs`` encoding instead of the UTF-8
|
||||||
encoding for the filesystem encoding.
|
encoding for the filesystem encoding.
|
||||||
|
@ -161,7 +161,7 @@ to 1 and ``-bb`` sets :c:data:`Py_BytesWarningFlag` to 2.
|
||||||
|
|
||||||
.. availability:: Windows.
|
.. availability:: Windows.
|
||||||
|
|
||||||
.. c:var:: Py_LegacyWindowsStdioFlag
|
.. c:var:: int Py_LegacyWindowsStdioFlag
|
||||||
|
|
||||||
If the flag is non-zero, use :class:`io.FileIO` instead of
|
If the flag is non-zero, use :class:`io.FileIO` instead of
|
||||||
:class:`WindowsConsoleIO` for :mod:`sys` standard streams.
|
:class:`WindowsConsoleIO` for :mod:`sys` standard streams.
|
||||||
|
@ -173,7 +173,7 @@ to 1 and ``-bb`` sets :c:data:`Py_BytesWarningFlag` to 2.
|
||||||
|
|
||||||
.. availability:: Windows.
|
.. availability:: Windows.
|
||||||
|
|
||||||
.. c:var:: Py_NoSiteFlag
|
.. c:var:: int Py_NoSiteFlag
|
||||||
|
|
||||||
Disable the import of the module :mod:`site` and the site-dependent
|
Disable the import of the module :mod:`site` and the site-dependent
|
||||||
manipulations of :data:`sys.path` that it entails. Also disable these
|
manipulations of :data:`sys.path` that it entails. Also disable these
|
||||||
|
@ -182,7 +182,7 @@ to 1 and ``-bb`` sets :c:data:`Py_BytesWarningFlag` to 2.
|
||||||
|
|
||||||
Set by the :option:`-S` option.
|
Set by the :option:`-S` option.
|
||||||
|
|
||||||
.. c:var:: Py_NoUserSiteDirectory
|
.. c:var:: int Py_NoUserSiteDirectory
|
||||||
|
|
||||||
Don't add the :data:`user site-packages directory <site.USER_SITE>` to
|
Don't add the :data:`user site-packages directory <site.USER_SITE>` to
|
||||||
:data:`sys.path`.
|
:data:`sys.path`.
|
||||||
|
@ -190,12 +190,12 @@ to 1 and ``-bb`` sets :c:data:`Py_BytesWarningFlag` to 2.
|
||||||
Set by the :option:`-s` and :option:`-I` options, and the
|
Set by the :option:`-s` and :option:`-I` options, and the
|
||||||
:envvar:`PYTHONNOUSERSITE` environment variable.
|
:envvar:`PYTHONNOUSERSITE` environment variable.
|
||||||
|
|
||||||
.. c:var:: Py_OptimizeFlag
|
.. c:var:: int Py_OptimizeFlag
|
||||||
|
|
||||||
Set by the :option:`-O` option and the :envvar:`PYTHONOPTIMIZE` environment
|
Set by the :option:`-O` option and the :envvar:`PYTHONOPTIMIZE` environment
|
||||||
variable.
|
variable.
|
||||||
|
|
||||||
.. c:var:: Py_QuietFlag
|
.. c:var:: int Py_QuietFlag
|
||||||
|
|
||||||
Don't display the copyright and version messages even in interactive mode.
|
Don't display the copyright and version messages even in interactive mode.
|
||||||
|
|
||||||
|
@ -203,14 +203,14 @@ to 1 and ``-bb`` sets :c:data:`Py_BytesWarningFlag` to 2.
|
||||||
|
|
||||||
.. versionadded:: 3.2
|
.. versionadded:: 3.2
|
||||||
|
|
||||||
.. c:var:: Py_UnbufferedStdioFlag
|
.. c:var:: int Py_UnbufferedStdioFlag
|
||||||
|
|
||||||
Force the stdout and stderr streams to be unbuffered.
|
Force the stdout and stderr streams to be unbuffered.
|
||||||
|
|
||||||
Set by the :option:`-u` option and the :envvar:`PYTHONUNBUFFERED`
|
Set by the :option:`-u` option and the :envvar:`PYTHONUNBUFFERED`
|
||||||
environment variable.
|
environment variable.
|
||||||
|
|
||||||
.. c:var:: Py_VerboseFlag
|
.. c:var:: int Py_VerboseFlag
|
||||||
|
|
||||||
Print a message each time a module is initialized, showing the place
|
Print a message each time a module is initialized, showing the place
|
||||||
(filename or built-in module) from which it is loaded. If greater or equal
|
(filename or built-in module) from which it is loaded. If greater or equal
|
||||||
|
@ -830,7 +830,7 @@ code, or when embedding the Python interpreter:
|
||||||
.. c:type:: PyThreadState
|
.. c:type:: PyThreadState
|
||||||
|
|
||||||
This data structure represents the state of a single thread. The only public
|
This data structure represents the state of a single thread. The only public
|
||||||
data member is :c:type:`PyInterpreterState \*`:attr:`interp`, which points to
|
data member is :attr:`interp` (:c:type:`PyInterpreterState *`), which points to
|
||||||
this thread's interpreter state.
|
this thread's interpreter state.
|
||||||
|
|
||||||
|
|
||||||
|
@ -1619,7 +1619,7 @@ The Python interpreter provides low-level support for thread-local storage
|
||||||
(TLS) which wraps the underlying native TLS implementation to support the
|
(TLS) which wraps the underlying native TLS implementation to support the
|
||||||
Python-level thread local storage API (:class:`threading.local`). The
|
Python-level thread local storage API (:class:`threading.local`). The
|
||||||
CPython C level APIs are similar to those offered by pthreads and Windows:
|
CPython C level APIs are similar to those offered by pthreads and Windows:
|
||||||
use a thread key and functions to associate a :c:type:`void\*` value per
|
use a thread key and functions to associate a :c:type:`void*` value per
|
||||||
thread.
|
thread.
|
||||||
|
|
||||||
The GIL does *not* need to be held when calling these functions; they supply
|
The GIL does *not* need to be held when calling these functions; they supply
|
||||||
|
@ -1630,8 +1630,8 @@ you need to include :file:`pythread.h` to use thread-local storage.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
None of these API functions handle memory management on behalf of the
|
None of these API functions handle memory management on behalf of the
|
||||||
:c:type:`void\*` values. You need to allocate and deallocate them yourself.
|
:c:type:`void*` values. You need to allocate and deallocate them yourself.
|
||||||
If the :c:type:`void\*` values happen to be :c:type:`PyObject\*`, these
|
If the :c:type:`void*` values happen to be :c:type:`PyObject*`, these
|
||||||
functions don't do refcount operations on them either.
|
functions don't do refcount operations on them either.
|
||||||
|
|
||||||
.. _thread-specific-storage-api:
|
.. _thread-specific-storage-api:
|
||||||
|
@ -1727,14 +1727,14 @@ undefined if the given :c:type:`Py_tss_t` has not been initialized by
|
||||||
|
|
||||||
.. c:function:: int PyThread_tss_set(Py_tss_t *key, void *value)
|
.. c:function:: int PyThread_tss_set(Py_tss_t *key, void *value)
|
||||||
|
|
||||||
Return a zero value to indicate successfully associating a :c:type:`void\*`
|
Return a zero value to indicate successfully associating a :c:type:`void*`
|
||||||
value with a TSS key in the current thread. Each thread has a distinct
|
value with a TSS key in the current thread. Each thread has a distinct
|
||||||
mapping of the key to a :c:type:`void\*` value.
|
mapping of the key to a :c:type:`void*` value.
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: void* PyThread_tss_get(Py_tss_t *key)
|
.. c:function:: void* PyThread_tss_get(Py_tss_t *key)
|
||||||
|
|
||||||
Return the :c:type:`void\*` value associated with a TSS key in the current
|
Return the :c:type:`void*` value associated with a TSS key in the current
|
||||||
thread. This returns ``NULL`` if no value is associated with the key in the
|
thread. This returns ``NULL`` if no value is associated with the key in the
|
||||||
current thread.
|
current thread.
|
||||||
|
|
||||||
|
|
|
@ -229,13 +229,13 @@ Objects, Types and Reference Counts
|
||||||
.. index:: object: type
|
.. index:: object: type
|
||||||
|
|
||||||
Most Python/C API functions have one or more arguments as well as a return value
|
Most Python/C API functions have one or more arguments as well as a return value
|
||||||
of type :c:type:`PyObject\*`. This type is a pointer to an opaque data type
|
of type :c:type:`PyObject*`. This type is a pointer to an opaque data type
|
||||||
representing an arbitrary Python object. Since all Python object types are
|
representing an arbitrary Python object. Since all Python object types are
|
||||||
treated the same way by the Python language in most situations (e.g.,
|
treated the same way by the Python language in most situations (e.g.,
|
||||||
assignments, scope rules, and argument passing), it is only fitting that they
|
assignments, scope rules, and argument passing), it is only fitting that they
|
||||||
should be represented by a single C type. Almost all Python objects live on the
|
should be represented by a single C type. Almost all Python objects live on the
|
||||||
heap: you never declare an automatic or static variable of type
|
heap: you never declare an automatic or static variable of type
|
||||||
:c:type:`PyObject`, only pointer variables of type :c:type:`PyObject\*` can be
|
:c:type:`PyObject`, only pointer variables of type :c:type:`PyObject*` can be
|
||||||
declared. The sole exception are the type objects; since these must never be
|
declared. The sole exception are the type objects; since these must never be
|
||||||
deallocated, they are typically static :c:type:`PyTypeObject` objects.
|
deallocated, they are typically static :c:type:`PyTypeObject` objects.
|
||||||
|
|
||||||
|
@ -496,7 +496,7 @@ Types
|
||||||
|
|
||||||
There are few other data types that play a significant role in the Python/C
|
There are few other data types that play a significant role in the Python/C
|
||||||
API; most are simple C types such as :c:type:`int`, :c:type:`long`,
|
API; most are simple C types such as :c:type:`int`, :c:type:`long`,
|
||||||
:c:type:`double` and :c:type:`char\*`. A few structure types are used to
|
:c:type:`double` and :c:type:`char*`. A few structure types are used to
|
||||||
describe static tables used to list the functions exported by a module or the
|
describe static tables used to list the functions exported by a module or the
|
||||||
data attributes of a new object type, and another is used to describe the value
|
data attributes of a new object type, and another is used to describe the value
|
||||||
of a complex number. These will be discussed together with the functions that
|
of a complex number. These will be discussed together with the functions that
|
||||||
|
|
|
@ -43,7 +43,7 @@ The following functions allow marshalled values to be read back in.
|
||||||
|
|
||||||
.. c:function:: long PyMarshal_ReadLongFromFile(FILE *file)
|
.. c:function:: long PyMarshal_ReadLongFromFile(FILE *file)
|
||||||
|
|
||||||
Return a C :c:type:`long` from the data stream in a :c:type:`FILE\*` opened
|
Return a C :c:type:`long` from the data stream in a :c:type:`FILE*` opened
|
||||||
for reading. Only a 32-bit value can be read in using this function,
|
for reading. Only a 32-bit value can be read in using this function,
|
||||||
regardless of the native size of :c:type:`long`.
|
regardless of the native size of :c:type:`long`.
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ The following functions allow marshalled values to be read back in.
|
||||||
|
|
||||||
.. c:function:: int PyMarshal_ReadShortFromFile(FILE *file)
|
.. c:function:: int PyMarshal_ReadShortFromFile(FILE *file)
|
||||||
|
|
||||||
Return a C :c:type:`short` from the data stream in a :c:type:`FILE\*` opened
|
Return a C :c:type:`short` from the data stream in a :c:type:`FILE*` opened
|
||||||
for reading. Only a 16-bit value can be read in using this function,
|
for reading. Only a 16-bit value can be read in using this function,
|
||||||
regardless of the native size of :c:type:`short`.
|
regardless of the native size of :c:type:`short`.
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ The following functions allow marshalled values to be read back in.
|
||||||
|
|
||||||
.. c:function:: PyObject* PyMarshal_ReadObjectFromFile(FILE *file)
|
.. c:function:: PyObject* PyMarshal_ReadObjectFromFile(FILE *file)
|
||||||
|
|
||||||
Return a Python object from the data stream in a :c:type:`FILE\*` opened for
|
Return a Python object from the data stream in a :c:type:`FILE*` opened for
|
||||||
reading.
|
reading.
|
||||||
|
|
||||||
On error, sets the appropriate exception (:exc:`EOFError`, :exc:`ValueError`
|
On error, sets the appropriate exception (:exc:`EOFError`, :exc:`ValueError`
|
||||||
|
@ -72,7 +72,7 @@ The following functions allow marshalled values to be read back in.
|
||||||
|
|
||||||
.. c:function:: PyObject* PyMarshal_ReadLastObjectFromFile(FILE *file)
|
.. c:function:: PyObject* PyMarshal_ReadLastObjectFromFile(FILE *file)
|
||||||
|
|
||||||
Return a Python object from the data stream in a :c:type:`FILE\*` opened for
|
Return a Python object from the data stream in a :c:type:`FILE*` opened for
|
||||||
reading. Unlike :c:func:`PyMarshal_ReadObjectFromFile`, this function
|
reading. Unlike :c:func:`PyMarshal_ReadObjectFromFile`, this function
|
||||||
assumes that no further objects will be read from the file, allowing it to
|
assumes that no further objects will be read from the file, allowing it to
|
||||||
aggressively load file data into memory so that the de-serialization can
|
aggressively load file data into memory so that the de-serialization can
|
||||||
|
|
|
@ -109,7 +109,7 @@ zero bytes.
|
||||||
|
|
||||||
.. c:function:: void* PyMem_RawMalloc(size_t n)
|
.. c:function:: void* PyMem_RawMalloc(size_t n)
|
||||||
|
|
||||||
Allocates *n* bytes and returns a pointer of type :c:type:`void\*` to the
|
Allocates *n* bytes and returns a pointer of type :c:type:`void*` to the
|
||||||
allocated memory, or ``NULL`` if the request fails.
|
allocated memory, or ``NULL`` if the request fails.
|
||||||
|
|
||||||
Requesting zero bytes returns a distinct non-``NULL`` pointer if possible, as
|
Requesting zero bytes returns a distinct non-``NULL`` pointer if possible, as
|
||||||
|
@ -120,7 +120,7 @@ zero bytes.
|
||||||
.. c:function:: void* PyMem_RawCalloc(size_t nelem, size_t elsize)
|
.. c:function:: void* PyMem_RawCalloc(size_t nelem, size_t elsize)
|
||||||
|
|
||||||
Allocates *nelem* elements each whose size in bytes is *elsize* and returns
|
Allocates *nelem* elements each whose size in bytes is *elsize* and returns
|
||||||
a pointer of type :c:type:`void\*` to the allocated memory, or ``NULL`` if the
|
a pointer of type :c:type:`void*` to the allocated memory, or ``NULL`` if the
|
||||||
request fails. The memory is initialized to zeros.
|
request fails. The memory is initialized to zeros.
|
||||||
|
|
||||||
Requesting zero elements or elements of size zero bytes returns a distinct
|
Requesting zero elements or elements of size zero bytes returns a distinct
|
||||||
|
@ -180,7 +180,7 @@ The :ref:`default memory allocator <default-memory-allocators>` uses the
|
||||||
|
|
||||||
.. c:function:: void* PyMem_Malloc(size_t n)
|
.. c:function:: void* PyMem_Malloc(size_t n)
|
||||||
|
|
||||||
Allocates *n* bytes and returns a pointer of type :c:type:`void\*` to the
|
Allocates *n* bytes and returns a pointer of type :c:type:`void*` to the
|
||||||
allocated memory, or ``NULL`` if the request fails.
|
allocated memory, or ``NULL`` if the request fails.
|
||||||
|
|
||||||
Requesting zero bytes returns a distinct non-``NULL`` pointer if possible, as
|
Requesting zero bytes returns a distinct non-``NULL`` pointer if possible, as
|
||||||
|
@ -191,7 +191,7 @@ The :ref:`default memory allocator <default-memory-allocators>` uses the
|
||||||
.. c:function:: void* PyMem_Calloc(size_t nelem, size_t elsize)
|
.. c:function:: void* PyMem_Calloc(size_t nelem, size_t elsize)
|
||||||
|
|
||||||
Allocates *nelem* elements each whose size in bytes is *elsize* and returns
|
Allocates *nelem* elements each whose size in bytes is *elsize* and returns
|
||||||
a pointer of type :c:type:`void\*` to the allocated memory, or ``NULL`` if the
|
a pointer of type :c:type:`void*` to the allocated memory, or ``NULL`` if the
|
||||||
request fails. The memory is initialized to zeros.
|
request fails. The memory is initialized to zeros.
|
||||||
|
|
||||||
Requesting zero elements or elements of size zero bytes returns a distinct
|
Requesting zero elements or elements of size zero bytes returns a distinct
|
||||||
|
@ -233,14 +233,14 @@ The following type-oriented macros are provided for convenience. Note that
|
||||||
.. c:function:: TYPE* PyMem_New(TYPE, size_t n)
|
.. c:function:: TYPE* PyMem_New(TYPE, size_t n)
|
||||||
|
|
||||||
Same as :c:func:`PyMem_Malloc`, but allocates ``(n * sizeof(TYPE))`` bytes of
|
Same as :c:func:`PyMem_Malloc`, but allocates ``(n * sizeof(TYPE))`` bytes of
|
||||||
memory. Returns a pointer cast to :c:type:`TYPE\*`. The memory will not have
|
memory. Returns a pointer cast to :c:type:`TYPE*`. The memory will not have
|
||||||
been initialized in any way.
|
been initialized in any way.
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: TYPE* PyMem_Resize(void *p, TYPE, size_t n)
|
.. c:function:: TYPE* PyMem_Resize(void *p, TYPE, size_t n)
|
||||||
|
|
||||||
Same as :c:func:`PyMem_Realloc`, but the memory block is resized to ``(n *
|
Same as :c:func:`PyMem_Realloc`, but the memory block is resized to ``(n *
|
||||||
sizeof(TYPE))`` bytes. Returns a pointer cast to :c:type:`TYPE\*`. On return,
|
sizeof(TYPE))`` bytes. Returns a pointer cast to :c:type:`TYPE*`. On return,
|
||||||
*p* will be a pointer to the new memory area, or ``NULL`` in the event of
|
*p* will be a pointer to the new memory area, or ``NULL`` in the event of
|
||||||
failure.
|
failure.
|
||||||
|
|
||||||
|
@ -282,7 +282,7 @@ The :ref:`default object allocator <default-memory-allocators>` uses the
|
||||||
|
|
||||||
.. c:function:: void* PyObject_Malloc(size_t n)
|
.. c:function:: void* PyObject_Malloc(size_t n)
|
||||||
|
|
||||||
Allocates *n* bytes and returns a pointer of type :c:type:`void\*` to the
|
Allocates *n* bytes and returns a pointer of type :c:type:`void*` to the
|
||||||
allocated memory, or ``NULL`` if the request fails.
|
allocated memory, or ``NULL`` if the request fails.
|
||||||
|
|
||||||
Requesting zero bytes returns a distinct non-``NULL`` pointer if possible, as
|
Requesting zero bytes returns a distinct non-``NULL`` pointer if possible, as
|
||||||
|
@ -293,7 +293,7 @@ The :ref:`default object allocator <default-memory-allocators>` uses the
|
||||||
.. c:function:: void* PyObject_Calloc(size_t nelem, size_t elsize)
|
.. c:function:: void* PyObject_Calloc(size_t nelem, size_t elsize)
|
||||||
|
|
||||||
Allocates *nelem* elements each whose size in bytes is *elsize* and returns
|
Allocates *nelem* elements each whose size in bytes is *elsize* and returns
|
||||||
a pointer of type :c:type:`void\*` to the allocated memory, or ``NULL`` if the
|
a pointer of type :c:type:`void*` to the allocated memory, or ``NULL`` if the
|
||||||
request fails. The memory is initialized to zeros.
|
request fails. The memory is initialized to zeros.
|
||||||
|
|
||||||
Requesting zero elements or elements of size zero bytes returns a distinct
|
Requesting zero elements or elements of size zero bytes returns a distinct
|
||||||
|
@ -388,7 +388,7 @@ Customize Memory Allocators
|
||||||
|
|
||||||
Enum used to identify an allocator domain. Domains:
|
Enum used to identify an allocator domain. Domains:
|
||||||
|
|
||||||
.. c:var:: PYMEM_DOMAIN_RAW
|
.. c:macro:: PYMEM_DOMAIN_RAW
|
||||||
|
|
||||||
Functions:
|
Functions:
|
||||||
|
|
||||||
|
@ -397,7 +397,7 @@ Customize Memory Allocators
|
||||||
* :c:func:`PyMem_RawCalloc`
|
* :c:func:`PyMem_RawCalloc`
|
||||||
* :c:func:`PyMem_RawFree`
|
* :c:func:`PyMem_RawFree`
|
||||||
|
|
||||||
.. c:var:: PYMEM_DOMAIN_MEM
|
.. c:macro:: PYMEM_DOMAIN_MEM
|
||||||
|
|
||||||
Functions:
|
Functions:
|
||||||
|
|
||||||
|
@ -406,7 +406,7 @@ Customize Memory Allocators
|
||||||
* :c:func:`PyMem_Calloc`
|
* :c:func:`PyMem_Calloc`
|
||||||
* :c:func:`PyMem_Free`
|
* :c:func:`PyMem_Free`
|
||||||
|
|
||||||
.. c:var:: PYMEM_DOMAIN_OBJ
|
.. c:macro:: PYMEM_DOMAIN_OBJ
|
||||||
|
|
||||||
Functions:
|
Functions:
|
||||||
|
|
||||||
|
@ -519,11 +519,11 @@ Customize pymalloc Arena Allocator
|
||||||
| ``void free(void *ctx, size_t size, void *ptr)`` | free an arena |
|
| ``void free(void *ctx, size_t size, void *ptr)`` | free an arena |
|
||||||
+--------------------------------------------------+---------------------------------------+
|
+--------------------------------------------------+---------------------------------------+
|
||||||
|
|
||||||
.. c:function:: PyObject_GetArenaAllocator(PyObjectArenaAllocator *allocator)
|
.. c:function:: void PyObject_GetArenaAllocator(PyObjectArenaAllocator *allocator)
|
||||||
|
|
||||||
Get the arena allocator.
|
Get the arena allocator.
|
||||||
|
|
||||||
.. c:function:: PyObject_SetArenaAllocator(PyObjectArenaAllocator *allocator)
|
.. c:function:: void PyObject_SetArenaAllocator(PyObjectArenaAllocator *allocator)
|
||||||
|
|
||||||
Set the arena allocator.
|
Set the arena allocator.
|
||||||
|
|
||||||
|
|
|
@ -325,7 +325,7 @@ The *m_slots* array must be terminated by a slot with id 0.
|
||||||
|
|
||||||
The available slot types are:
|
The available slot types are:
|
||||||
|
|
||||||
.. c:var:: Py_mod_create
|
.. c:macro:: Py_mod_create
|
||||||
|
|
||||||
Specifies a function that is called to create the module object itself.
|
Specifies a function that is called to create the module object itself.
|
||||||
The *value* pointer of this slot must point to a function of the signature:
|
The *value* pointer of this slot must point to a function of the signature:
|
||||||
|
@ -357,7 +357,7 @@ The available slot types are:
|
||||||
``PyModuleDef`` has non-``NULL`` ``m_traverse``, ``m_clear``,
|
``PyModuleDef`` has non-``NULL`` ``m_traverse``, ``m_clear``,
|
||||||
``m_free``; non-zero ``m_size``; or slots other than ``Py_mod_create``.
|
``m_free``; non-zero ``m_size``; or slots other than ``Py_mod_create``.
|
||||||
|
|
||||||
.. c:var:: Py_mod_exec
|
.. c:macro:: Py_mod_exec
|
||||||
|
|
||||||
Specifies a function that is called to *execute* the module.
|
Specifies a function that is called to *execute* the module.
|
||||||
This is equivalent to executing the code of a Python module: typically,
|
This is equivalent to executing the code of a Python module: typically,
|
||||||
|
|
|
@ -291,7 +291,7 @@ Object Protocol
|
||||||
is equivalent to the Python expression ``type(o)``. This function increments the
|
is equivalent to the Python expression ``type(o)``. This function increments the
|
||||||
reference count of the return value. There's really no reason to use this
|
reference count of the return value. There's really no reason to use this
|
||||||
function instead of the common expression ``o->ob_type``, which returns a
|
function instead of the common expression ``o->ob_type``, which returns a
|
||||||
pointer of type :c:type:`PyTypeObject\*`, except when the incremented reference
|
pointer of type :c:type:`PyTypeObject*`, except when the incremented reference
|
||||||
count is needed.
|
count is needed.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -145,7 +145,7 @@ Implementing functions and methods
|
||||||
.. c:type:: PyCFunction
|
.. c:type:: PyCFunction
|
||||||
|
|
||||||
Type of the functions used to implement most Python callables in C.
|
Type of the functions used to implement most Python callables in C.
|
||||||
Functions of this type take two :c:type:`PyObject\*` parameters and return
|
Functions of this type take two :c:type:`PyObject*` parameters and return
|
||||||
one such value. If the return value is ``NULL``, an exception shall have
|
one such value. If the return value is ``NULL``, an exception shall have
|
||||||
been set. If not ``NULL``, the return value is interpreted as the return
|
been set. If not ``NULL``, the return value is interpreted as the return
|
||||||
value of the function as exposed in Python. The function must return a new
|
value of the function as exposed in Python. The function must return a new
|
||||||
|
@ -224,10 +224,10 @@ Implementing functions and methods
|
||||||
+------------------+---------------+-------------------------------+
|
+------------------+---------------+-------------------------------+
|
||||||
|
|
||||||
The :attr:`ml_meth` is a C function pointer. The functions may be of different
|
The :attr:`ml_meth` is a C function pointer. The functions may be of different
|
||||||
types, but they always return :c:type:`PyObject\*`. If the function is not of
|
types, but they always return :c:type:`PyObject*`. If the function is not of
|
||||||
the :c:type:`PyCFunction`, the compiler will require a cast in the method table.
|
the :c:type:`PyCFunction`, the compiler will require a cast in the method table.
|
||||||
Even though :c:type:`PyCFunction` defines the first parameter as
|
Even though :c:type:`PyCFunction` defines the first parameter as
|
||||||
:c:type:`PyObject\*`, it is common that the method implementation uses the
|
:c:type:`PyObject*`, it is common that the method implementation uses the
|
||||||
specific C type of the *self* object.
|
specific C type of the *self* object.
|
||||||
|
|
||||||
The :attr:`ml_flags` field is a bitfield which can include the following flags.
|
The :attr:`ml_flags` field is a bitfield which can include the following flags.
|
||||||
|
@ -239,7 +239,7 @@ There are these calling conventions:
|
||||||
.. data:: METH_VARARGS
|
.. data:: METH_VARARGS
|
||||||
|
|
||||||
This is the typical calling convention, where the methods have the type
|
This is the typical calling convention, where the methods have the type
|
||||||
:c:type:`PyCFunction`. The function expects two :c:type:`PyObject\*` values.
|
:c:type:`PyCFunction`. The function expects two :c:type:`PyObject*` values.
|
||||||
The first one is the *self* object for methods; for module functions, it is
|
The first one is the *self* object for methods; for module functions, it is
|
||||||
the module object. The second parameter (often called *args*) is a tuple
|
the module object. The second parameter (often called *args*) is a tuple
|
||||||
object representing all arguments. This parameter is typically processed
|
object representing all arguments. This parameter is typically processed
|
||||||
|
@ -260,7 +260,7 @@ There are these calling conventions:
|
||||||
Fast calling convention supporting only positional arguments.
|
Fast calling convention supporting only positional arguments.
|
||||||
The methods have the type :c:type:`_PyCFunctionFast`.
|
The methods have the type :c:type:`_PyCFunctionFast`.
|
||||||
The first parameter is *self*, the second parameter is a C array
|
The first parameter is *self*, the second parameter is a C array
|
||||||
of :c:type:`PyObject\*` values indicating the arguments and the third
|
of :c:type:`PyObject*` values indicating the arguments and the third
|
||||||
parameter is the number of arguments (the length of the array).
|
parameter is the number of arguments (the length of the array).
|
||||||
|
|
||||||
This is not part of the :ref:`limited API <stable>`.
|
This is not part of the :ref:`limited API <stable>`.
|
||||||
|
@ -274,7 +274,7 @@ There are these calling conventions:
|
||||||
with methods of type :c:type:`_PyCFunctionFastWithKeywords`.
|
with methods of type :c:type:`_PyCFunctionFastWithKeywords`.
|
||||||
Keyword arguments are passed the same way as in the
|
Keyword arguments are passed the same way as in the
|
||||||
:ref:`vectorcall protocol <vectorcall>`:
|
:ref:`vectorcall protocol <vectorcall>`:
|
||||||
there is an additional fourth :c:type:`PyObject\*` parameter
|
there is an additional fourth :c:type:`PyObject*` parameter
|
||||||
which is a tuple representing the names of the keyword arguments
|
which is a tuple representing the names of the keyword arguments
|
||||||
(which are guaranteed to be strings)
|
(which are guaranteed to be strings)
|
||||||
or possibly ``NULL`` if there are no keywords. The values of the keyword
|
or possibly ``NULL`` if there are no keywords. The values of the keyword
|
||||||
|
@ -312,7 +312,7 @@ There are these calling conventions:
|
||||||
Methods with a single object argument can be listed with the :const:`METH_O`
|
Methods with a single object argument can be listed with the :const:`METH_O`
|
||||||
flag, instead of invoking :c:func:`PyArg_ParseTuple` with a ``"O"`` argument.
|
flag, instead of invoking :c:func:`PyArg_ParseTuple` with a ``"O"`` argument.
|
||||||
They have the type :c:type:`PyCFunction`, with the *self* parameter, and a
|
They have the type :c:type:`PyCFunction`, with the *self* parameter, and a
|
||||||
:c:type:`PyObject\*` parameter representing the single argument.
|
:c:type:`PyObject*` parameter representing the single argument.
|
||||||
|
|
||||||
|
|
||||||
These two constants are not used to indicate the calling convention but the
|
These two constants are not used to indicate the calling convention but the
|
||||||
|
@ -463,7 +463,7 @@ Accessing attributes of extension types
|
||||||
| | | getter and setter |
|
| | | getter and setter |
|
||||||
+-------------+------------------+-----------------------------------+
|
+-------------+------------------+-----------------------------------+
|
||||||
|
|
||||||
The ``get`` function takes one :c:type:`PyObject\*` parameter (the
|
The ``get`` function takes one :c:type:`PyObject*` parameter (the
|
||||||
instance) and a function pointer (the associated ``closure``)::
|
instance) and a function pointer (the associated ``closure``)::
|
||||||
|
|
||||||
typedef PyObject *(*getter)(PyObject *, void *);
|
typedef PyObject *(*getter)(PyObject *, void *);
|
||||||
|
@ -471,7 +471,7 @@ Accessing attributes of extension types
|
||||||
It should return a new reference on success or ``NULL`` with a set exception
|
It should return a new reference on success or ``NULL`` with a set exception
|
||||||
on failure.
|
on failure.
|
||||||
|
|
||||||
``set`` functions take two :c:type:`PyObject\*` parameters (the instance and
|
``set`` functions take two :c:type:`PyObject*` parameters (the instance and
|
||||||
the value to be set) and a function pointer (the associated ``closure``)::
|
the value to be set) and a function pointer (the associated ``closure``)::
|
||||||
|
|
||||||
typedef int (*setter)(PyObject *, PyObject *, void *);
|
typedef int (*setter)(PyObject *, PyObject *, void *);
|
||||||
|
|
|
@ -161,7 +161,7 @@ type.
|
||||||
.. c:type:: PyStructSequence_Field
|
.. c:type:: PyStructSequence_Field
|
||||||
|
|
||||||
Describes a field of a struct sequence. As a struct sequence is modeled as a
|
Describes a field of a struct sequence. As a struct sequence is modeled as a
|
||||||
tuple, all fields are typed as :c:type:`PyObject\*`. The index in the
|
tuple, all fields are typed as :c:type:`PyObject*`. The index in the
|
||||||
:attr:`fields` array of the :c:type:`PyStructSequence_Desc` determines which
|
:attr:`fields` array of the :c:type:`PyStructSequence_Desc` determines which
|
||||||
field of the struct sequence is described.
|
field of the struct sequence is described.
|
||||||
|
|
||||||
|
|
|
@ -1348,7 +1348,7 @@ and :c:type:`PyType_Type` effectively act as defaults.)
|
||||||
|
|
||||||
The following macro is defined to ease writing rich comparison functions:
|
The following macro is defined to ease writing rich comparison functions:
|
||||||
|
|
||||||
.. c:function:: PyObject \*Py_RETURN_RICHCOMPARE(VAL_A, VAL_B, int op)
|
.. c:macro:: Py_RETURN_RICHCOMPARE(VAL_A, VAL_B, op)
|
||||||
|
|
||||||
Return ``Py_True`` or ``Py_False`` from the function, depending on the
|
Return ``Py_True`` or ``Py_False`` from the function, depending on the
|
||||||
result of a comparison.
|
result of a comparison.
|
||||||
|
@ -1386,7 +1386,7 @@ and :c:type:`PyType_Type` effectively act as defaults.)
|
||||||
than zero and contains the offset in the instance structure of the weak
|
than zero and contains the offset in the instance structure of the weak
|
||||||
reference list head (ignoring the GC header, if present); this offset is used by
|
reference list head (ignoring the GC header, if present); this offset is used by
|
||||||
:c:func:`PyObject_ClearWeakRefs` and the :c:func:`PyWeakref_\*` functions. The
|
:c:func:`PyObject_ClearWeakRefs` and the :c:func:`PyWeakref_\*` functions. The
|
||||||
instance structure needs to include a field of type :c:type:`PyObject\*` which is
|
instance structure needs to include a field of type :c:type:`PyObject*` which is
|
||||||
initialized to ``NULL``.
|
initialized to ``NULL``.
|
||||||
|
|
||||||
Do not confuse this field with :c:member:`~PyTypeObject.tp_weaklist`; that is the list head for
|
Do not confuse this field with :c:member:`~PyTypeObject.tp_weaklist`; that is the list head for
|
||||||
|
|
|
@ -199,7 +199,7 @@ access internal read-only data of Unicode objects:
|
||||||
.. versionadded:: 3.3
|
.. versionadded:: 3.3
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: PyUnicode_MAX_CHAR_VALUE(PyObject *o)
|
.. c:macro:: PyUnicode_MAX_CHAR_VALUE(o)
|
||||||
|
|
||||||
Return the maximum code point that is suitable for creating another string
|
Return the maximum code point that is suitable for creating another string
|
||||||
based on *o*, which must be in the "canonical" representation. This is
|
based on *o*, which must be in the "canonical" representation. This is
|
||||||
|
|
|
@ -16,11 +16,11 @@ parameter. The available start symbols are :const:`Py_eval_input`,
|
||||||
:const:`Py_file_input`, and :const:`Py_single_input`. These are described
|
:const:`Py_file_input`, and :const:`Py_single_input`. These are described
|
||||||
following the functions which accept them as parameters.
|
following the functions which accept them as parameters.
|
||||||
|
|
||||||
Note also that several of these functions take :c:type:`FILE\*` parameters. One
|
Note also that several of these functions take :c:type:`FILE*` parameters. One
|
||||||
particular issue which needs to be handled carefully is that the :c:type:`FILE`
|
particular issue which needs to be handled carefully is that the :c:type:`FILE`
|
||||||
structure for different C libraries can be different and incompatible. Under
|
structure for different C libraries can be different and incompatible. Under
|
||||||
Windows (at least), it is possible for dynamically linked extensions to actually
|
Windows (at least), it is possible for dynamically linked extensions to actually
|
||||||
use different libraries, so care should be taken that :c:type:`FILE\*` parameters
|
use different libraries, so care should be taken that :c:type:`FILE*` parameters
|
||||||
are only passed to these functions if it is certain that they were created by
|
are only passed to these functions if it is certain that they were created by
|
||||||
the same library that the Python runtime is using.
|
the same library that the Python runtime is using.
|
||||||
|
|
||||||
|
|
|
@ -2309,9 +2309,9 @@ Encoders:
|
||||||
:c:func:`PyUnicode_AsUTF8String`
|
:c:func:`PyUnicode_AsUTF8String`
|
||||||
* :c:func:`PyUnicode_EncodeUTF32`
|
* :c:func:`PyUnicode_EncodeUTF32`
|
||||||
* :c:func:`PyUnicode_EncodeUTF16`
|
* :c:func:`PyUnicode_EncodeUTF16`
|
||||||
* :c:func:`PyUnicode_EncodeUnicodeEscape:` use
|
* :c:func:`PyUnicode_EncodeUnicodeEscape` use
|
||||||
:c:func:`PyUnicode_AsUnicodeEscapeString`
|
:c:func:`PyUnicode_AsUnicodeEscapeString`
|
||||||
* :c:func:`PyUnicode_EncodeRawUnicodeEscape:` use
|
* :c:func:`PyUnicode_EncodeRawUnicodeEscape` use
|
||||||
:c:func:`PyUnicode_AsRawUnicodeEscapeString`
|
:c:func:`PyUnicode_AsRawUnicodeEscapeString`
|
||||||
* :c:func:`PyUnicode_EncodeLatin1`: use :c:func:`PyUnicode_AsLatin1String`
|
* :c:func:`PyUnicode_EncodeLatin1`: use :c:func:`PyUnicode_AsLatin1String`
|
||||||
* :c:func:`PyUnicode_EncodeASCII`: use :c:func:`PyUnicode_AsASCIIString`
|
* :c:func:`PyUnicode_EncodeASCII`: use :c:func:`PyUnicode_AsASCIIString`
|
||||||
|
|
Loading…
Reference in New Issue