summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2024-01-17 09:21:16 (GMT)
committerGitHub <noreply@github.com>2024-01-17 09:21:16 (GMT)
commitbda62c0b22f8266b515e9ebb64a6115947b9dd43 (patch)
tree7f2dbbbfc87bd161a48fd2493eb1b4073aa0f5c8
parent8cb1b797fb78865b7b0fb26a6883f3251f1b0190 (diff)
downloadcpython-bda62c0b22f8266b515e9ebb64a6115947b9dd43.zip
cpython-bda62c0b22f8266b515e9ebb64a6115947b9dd43.tar.gz
cpython-bda62c0b22f8266b515e9ebb64a6115947b9dd43.tar.bz2
[3.11] gh-102468: Document `PyCFunction_New*` and `PyCMethod_New` (GH-112557) (GH-114120)
gh-102468: Document `PyCFunction_New*` and `PyCMethod_New` (GH-112557) (cherry picked from commit a482bc67ee786e60937a547776fcf9528810e1ce) Co-authored-by: AN Long <aisk@users.noreply.github.com> Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
-rw-r--r--Doc/c-api/structures.rst34
-rw-r--r--Doc/data/refcounts.dat15
2 files changed, 49 insertions, 0 deletions
diff --git a/Doc/c-api/structures.rst b/Doc/c-api/structures.rst
index 304cc31..1d31354 100644
--- a/Doc/c-api/structures.rst
+++ b/Doc/c-api/structures.rst
@@ -418,6 +418,40 @@ definition with the same method name.
slot. This is helpful because calls to PyCFunctions are optimized more
than wrapper object calls.
+.. c:function:: PyObject * PyCMethod_New(PyMethodDef *ml, PyObject *self, PyObject *module, PyTypeObject *cls)
+
+ Turn *ml* into a Python :term:`callable` object.
+ The caller must ensure that *ml* outlives the :term:`callable`.
+ Typically, *ml* is defined as a static variable.
+
+ The *self* parameter will be passed as the *self* argument
+ to the C function in ``ml->ml_meth`` when invoked.
+ *self* can be ``NULL``.
+
+ The :term:`callable` object's ``__module__`` attribute
+ can be set from the given *module* argument.
+ *module* should be a Python string,
+ which will be used as name of the module the function is defined in.
+ If unavailable, it can be set to :const:`None` or ``NULL``.
+
+ .. seealso:: :attr:`function.__module__`
+
+ The *cls* parameter will be passed as the *defining_class*
+ argument to the C function.
+ Must be set if :c:macro:`METH_METHOD` is set on ``ml->ml_flags``.
+
+ .. versionadded:: 3.9
+
+
+.. c:function:: PyObject * PyCFunction_NewEx(PyMethodDef *ml, PyObject *self, PyObject *module)
+
+ Equivalent to ``PyCMethod_New(ml, self, module, NULL)``.
+
+
+.. c:function:: PyObject * PyCFunction_New(PyMethodDef *ml, PyObject *self)
+
+ Equivalent to ``PyCMethod_New(ml, self, NULL, NULL)``.
+
Accessing attributes of extension types
---------------------------------------
diff --git a/Doc/data/refcounts.dat b/Doc/data/refcounts.dat
index 3ba39fa..0465668 100644
--- a/Doc/data/refcounts.dat
+++ b/Doc/data/refcounts.dat
@@ -402,6 +402,21 @@ PyContextVar_Reset:int:::
PyContextVar_Reset:PyObject*:var:0:
PyContextVar_Reset:PyObject*:token:-1:
+PyCFunction_New:PyObject*::+1:
+PyCFunction_New:PyMethodDef*:ml::
+PyCFunction_New:PyObject*:self:+1:
+
+PyCFunction_NewEx:PyObject*::+1:
+PyCFunction_NewEx:PyMethodDef*:ml::
+PyCFunction_NewEx:PyObject*:self:+1:
+PyCFunction_NewEx:PyObject*:module:+1:
+
+PyCMethod_New:PyObject*::+1:
+PyCMethod_New:PyMethodDef*:ml::
+PyCMethod_New:PyObject*:self:+1:
+PyCMethod_New:PyObject*:module:+1:
+PyCMethod_New:PyObject*:cls:+1:
+
PyDate_Check:int:::
PyDate_Check:PyObject*:ob:0: