mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
Issue #18589: fix hyperlinking of type slots (tp_*)
This commit is contained in:
parent
b3c872403d
commit
39668f57f4
9 changed files with 192 additions and 192 deletions
|
@ -607,28 +607,28 @@ recursion depth automatically).
|
|||
Ends a :c:func:`Py_EnterRecursiveCall`. Must be called once for each
|
||||
*successful* invocation of :c:func:`Py_EnterRecursiveCall`.
|
||||
|
||||
Properly implementing :attr:`tp_repr` for container types requires
|
||||
Properly implementing :c:member:`~PyTypeObject.tp_repr` for container types requires
|
||||
special recursion handling. In addition to protecting the stack,
|
||||
:attr:`tp_repr` also needs to track objects to prevent cycles. The
|
||||
:c:member:`~PyTypeObject.tp_repr` also needs to track objects to prevent cycles. The
|
||||
following two functions facilitate this functionality. Effectively,
|
||||
these are the C equivalent to :func:`reprlib.recursive_repr`.
|
||||
|
||||
.. c:function:: int Py_ReprEnter(PyObject *object)
|
||||
|
||||
Called at the beginning of the :attr:`tp_repr` implementation to
|
||||
Called at the beginning of the :c:member:`~PyTypeObject.tp_repr` implementation to
|
||||
detect cycles.
|
||||
|
||||
If the object has already been processed, the function returns a
|
||||
positive integer. In that case the :attr:`tp_repr` implementation
|
||||
positive integer. In that case the :c:member:`~PyTypeObject.tp_repr` implementation
|
||||
should return a string object indicating a cycle. As examples,
|
||||
:class:`dict` objects return ``{...}`` and :class:`list` objects
|
||||
return ``[...]``.
|
||||
|
||||
The function will return a negative integer if the recursion limit
|
||||
is reached. In that case the :attr:`tp_repr` implementation should
|
||||
is reached. In that case the :c:member:`~PyTypeObject.tp_repr` implementation should
|
||||
typically return ``NULL``.
|
||||
|
||||
Otherwise, the function returns zero and the :attr:`tp_repr`
|
||||
Otherwise, the function returns zero and the :c:member:`~PyTypeObject.tp_repr`
|
||||
implementation can continue normally.
|
||||
|
||||
.. c:function:: void Py_ReprLeave(PyObject *object)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue