Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions Doc/c-api/structures.rst
Original file line number Diff line number Diff line change
Expand Up @@ -447,6 +447,25 @@ definition with the same method name.
slot. This is helpful because calls to PyCFunctions are optimized more
than wrapper object calls.
.. c:var:: PyTypeObject PyCMethod_Type
The type object corresponding to Python C method objects. This is
available as :class:`types.BuiltinMethodType` in the Python layer.
.. c:function:: int PyCMethod_Check(PyObject *f)
Return true if *f* is an instance of the :c:type:`PyCMethod_Type` type
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Return true if *f* is an instance of the :c:type:`PyCMethod_Type` type
Returns ``true`` if *f* is an instance of the :c:type:`PyCMethod_Type` type. Otherwise returns ``false``.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do not think it is necessary. We do not do so consistently.

Copy link
Member Author

@ZeroIntensity ZeroIntensity Nov 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We use the current style throughout most of the documentation. See PyFunction_Check, for example:

Return true if o is a function object (has type PyFunction_Type).

or a subtype of it. This function always succeeds.
.. c:function:: int PyCMethod_CheckExact(PyObject *f)
This is the same as :c:func:`PyCMethod_Check`, but does not account for
subtypes.
.. c:function:: PyObject * PyCMethod_New(PyMethodDef *ml, PyObject *self, PyObject *module, PyTypeObject *cls)
Turn *ml* into a Python :term:`callable` object.
Expand All @@ -472,6 +491,24 @@ definition with the same method name.
.. versionadded:: 3.9
.. c:var:: PyTypeObject PyCFunction_Type
The type object corresponding to Python C function objects. This is
available as :class:`types.BuiltinFunctionType` in the Python layer.
.. c:function:: int PyCFunction_Check(PyObject *f)
Return true if *f* is an instance of the :c:type:`PyCFunction_Type` type
or a subtype of it. This function always succeeds.
Comment on lines +502 to +503
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Return true if *f* is an instance of the :c:type:`PyCFunction_Type` type
or a subtype of it. This function always succeeds.
Returns ``true`` if *f* is an instance of the :c:type:`PyCFunction_Type` type
or a subtype of it. Otherwise returns ``false``. This function always succeeds.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We use imperative style in general so I do not think it is necessary.

.. c:function:: int PyCFunction_CheckExact(PyObject *f)
This is the same as :c:func:`PyCFunction_Check`, but does not account for
subtypes.
.. c:function:: PyObject * PyCFunction_NewEx(PyMethodDef *ml, PyObject *self, PyObject *module)
Equivalent to ``PyCMethod_New(ml, self, module, NULL)``.
Expand All @@ -482,6 +519,52 @@ definition with the same method name.
Equivalent to ``PyCMethod_New(ml, self, NULL, NULL)``.
.. c:function:: int PyCFunction_GetFlags(PyObject *func)
Get the function flags on *func* as they were passed to
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Get the function flags on *func* as they were passed to
Gets the function flags on *func* as they were passed to

:c:member:`~PyMethodDef.ml_flags`.
This function returns the function's flags on success, and ``-1`` with an
exception set on failure.
.. c:function:: int PyCFunction_GET_FLAGS(PyObject *func)
This is the same as :c:func:`PyCFunction_GetFlags`, but without error
checking.
.. c:function:: PyCFunction PyCFunction_GetFunction(PyObject *func)
Get the function pointer on *func* as it was passed to
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Get the function pointer on *func* as it was passed to
Gets the function pointer on *func* as it was passed to

:c:member:`~PyMethodDef.ml_meth`.
This function returns the function pointer on success, and ``NULL`` with an
exception set on failure.
.. c:function:: int PyCFunction_GET_FUNCTION(PyObject *func)
This is the same as :c:func:`PyCFunction_GetFunction`, but without error
checking.
.. c:function:: PyObject *PyCFunction_GetSelf(PyObject *func)
Get the "self" object on *func*. This is the object that would be passed
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Get the "self" object on *func*. This is the object that would be passed
Gets the "self" object on *func*. This is the object that would be passed

to the first argument of a :c:type:`PyCFunction`. In modules, this is the
module object.
This function returns a :term:`borrowed reference` to the "self" object
on success, and ``NULL`` with an exception set on failure.
.. c:function:: PyObject *PyCFunction_GET_SELF(PyObject *func)
This is the same as :c:func:`PyCFunction_GetSelf`, but without error
checking.
Accessing attributes of extension types
---------------------------------------
Expand Down
Loading