◐ Shell
reader mode source ↗
Skip to content
Merged
Show file tree
Changes from all commits
File filter
Conversations
Jump to
Diff view
Apply and reload
Show whitespace
Diff view
Apply and reload
5 changes: 3 additions & 2 deletions Doc/c-api/gcsupport.rst
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,9 @@ Constructors for container types must conform to two rules:
a :c:member:`~PyTypeObject.tp_traverse` handler or explicitly use one
from its subclass or subclasses.

Some APIs like :c:func:`PyType_FromSpecWithBases` or
:c:func:`PyType_FromSpec` will automatically populate the
:c:member:`~PyTypeObject.tp_flags`, :c:member:`~PyTypeObject.tp_traverse`
and :c:member:`~PyTypeObject.tp_clear` fields if the type inherits from a
class that implements the garbage collector protocol and the child class
Expand Down
16 changes: 9 additions & 7 deletions Doc/c-api/type.rst
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,15 @@ Type Objects
from a type's base class. Return ``0`` on success, or return ``-1`` and sets an
exception on error.

.. c:function:: void* PyType_GetSlot(PyTypeObject *type, int slot)

Return the function pointer stored in the given slot. If the
Expand Down Expand Up @@ -169,13 +178,6 @@ The following functions and structs are used to create
The associated module is not inherited by subclasses; it must be specified
for each class individually.

If some of the bases in *bases* implements the GC protocol and the type being
created does not include the :const:`Py_TPFLAGS_HAVE_GC` in the flags included in
*spec*, then the GC protocol will be automatically implemented from its parents. On
the contrary, if the type being created does include :const:`Py_TPFLAGS_HAVE_GC` in
its flags then it *must* implement the GC protocol itself by at least including a slot
for :c:member:`~PyTypeObject.tp_traverse` in *spec*.

This function calls :c:func:`PyType_Ready` on the new type.

.. versionadded:: 3.9
Toggle all file notes Toggle all file annotations