WebSafe 3.7github.com
|
|
🏠
Skip to content
26 changes: 26 additions & 0 deletions Doc/c-api/type.rst
Original file line number Diff line number Diff line change
Expand Up @@ -181,12 +181,14 @@ Type Objects
before initialization) and should be paired with :c:func:`PyObject_Free` in
:c:member:`~PyTypeObject.tp_free`.


.. c:function:: PyObject* PyType_GenericNew(PyTypeObject *type, PyObject *args, PyObject *kwds)

Generic handler for the :c:member:`~PyTypeObject.tp_new` slot of a type
object. Creates a new instance using the type's
:c:member:`~PyTypeObject.tp_alloc` slot and returns the resulting object.


.. c:function:: int PyType_Ready(PyTypeObject *type)

Finalize a type object. This should be called on all type objects to finish
Expand All @@ -203,13 +205,15 @@ Type Objects
GC protocol itself by at least implementing the
:c:member:`~PyTypeObject.tp_traverse` handle.


.. c:function:: PyObject* PyType_GetName(PyTypeObject *type)

Return the type's name. Equivalent to getting the type's
:attr:`~type.__name__` attribute.

.. versionadded:: 3.11


.. c:function:: PyObject* PyType_GetQualName(PyTypeObject *type)

Return the type's qualified name. Equivalent to getting the
Expand All @@ -225,13 +229,15 @@ Type Objects

.. versionadded:: 3.13


.. c:function:: PyObject* PyType_GetModuleName(PyTypeObject *type)

Return the type's module name. Equivalent to getting the
:attr:`type.__module__` attribute.

.. versionadded:: 3.13


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

Return the function pointer stored in the given slot. If the
Expand All @@ -248,6 +254,7 @@ Type Objects
:c:func:`PyType_GetSlot` can now accept all types.
Previously, it was limited to :ref:`heap types <heap-types>`.


.. c:function:: PyObject* PyType_GetModule(PyTypeObject *type)

Return the module object associated with the given type when the type was
Expand All @@ -267,6 +274,7 @@ Type Objects

.. versionadded:: 3.9


.. c:function:: void* PyType_GetModuleState(PyTypeObject *type)

Return the state of the module object associated with the given type.
Expand All @@ -281,6 +289,7 @@ Type Objects

.. versionadded:: 3.9


.. c:function:: PyObject* PyType_GetModuleByDef(PyTypeObject *type, struct PyModuleDef *def)

Find the first superclass whose module was created from
Expand All @@ -300,6 +309,7 @@ Type Objects

.. versionadded:: 3.11


.. c:function:: int PyType_GetBaseByToken(PyTypeObject *type, void *token, PyTypeObject **result)

Find the first superclass in *type*'s :term:`method resolution order` whose
Expand All @@ -318,6 +328,7 @@ Type Objects

.. versionadded:: 3.14


.. c:function:: int PyUnstable_Type_AssignVersionTag(PyTypeObject *type)

Attempt to assign a version tag to the given type.
Expand All @@ -328,6 +339,16 @@ Type Objects
.. versionadded:: 3.12


.. c:function:: int PyType_SUPPORTS_WEAKREFS(PyTypeObject *type)

Return true if instances of *type* support creating weak references, false
otherwise. This function always succeeds. *type* must not be ``NULL``.

.. seealso::
* :ref:`weakrefobjects`
* :py:mod:`weakref`


Creating Heap-Allocated Types
.............................

Expand Down Expand Up @@ -376,6 +397,7 @@ The following functions and structs are used to create

.. versionadded:: 3.12


.. c:function:: PyObject* PyType_FromModuleAndSpec(PyObject *module, PyType_Spec *spec, PyObject *bases)

Equivalent to ``PyType_FromMetaclass(NULL, module, spec, bases)``.
Expand All @@ -402,6 +424,7 @@ The following functions and structs are used to create
Creating classes whose metaclass overrides
:c:member:`~PyTypeObject.tp_new` is no longer allowed.


.. c:function:: PyObject* PyType_FromSpecWithBases(PyType_Spec *spec, PyObject *bases)

Equivalent to ``PyType_FromMetaclass(NULL, NULL, spec, bases)``.
Expand All @@ -423,6 +446,7 @@ The following functions and structs are used to create
Creating classes whose metaclass overrides
:c:member:`~PyTypeObject.tp_new` is no longer allowed.


.. c:function:: PyObject* PyType_FromSpec(PyType_Spec *spec)

Equivalent to ``PyType_FromMetaclass(NULL, NULL, spec, NULL)``.
Expand All @@ -443,6 +467,7 @@ The following functions and structs are used to create
Creating classes whose metaclass overrides
:c:member:`~PyTypeObject.tp_new` is no longer allowed.


.. c:function:: int PyType_Freeze(PyTypeObject *type)

Make a type immutable: set the :c:macro:`Py_TPFLAGS_IMMUTABLETYPE` flag.
Expand Down Expand Up @@ -614,6 +639,7 @@ The following functions and structs are used to create
* :c:data:`Py_tp_token` (for clarity, prefer :c:data:`Py_TP_USE_SPEC`
rather than ``NULL``)


.. c:macro:: Py_tp_token

A :c:member:`~PyType_Slot.slot` that records a static memory layout ID
Expand Down
8 changes: 8 additions & 0 deletions Doc/c-api/weakref.rst
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ as much as it can.
weakly referenceable object, or if *callback* is not callable, ``None``, or
``NULL``, this will return ``NULL`` and raise :exc:`TypeError`.

.. seealso::
:c:func:`PyType_SUPPORTS_WEAKREFS` for checking if *ob* is weakly
referenceable.


.. c:function:: PyObject* PyWeakref_NewProxy(PyObject *ob, PyObject *callback)

Expand All @@ -57,6 +61,10 @@ as much as it can.
is not a weakly referenceable object, or if *callback* is not callable,
``None``, or ``NULL``, this will return ``NULL`` and raise :exc:`TypeError`.

.. seealso::
:c:func:`PyType_SUPPORTS_WEAKREFS` for checking if *ob* is weakly
referenceable.


.. c:function:: int PyWeakref_GetRef(PyObject *ref, PyObject **pobj)

Expand Down
Loading