mirror of
https://github.com/python/cpython.git
synced 2026-04-05 03:21:05 +00:00
gh-107073: Make PyObject_VisitManagedDict() public (#108763)
Make PyObject_VisitManagedDict() and PyObject_ClearManagedDict() functions public in Python 3.13 C API. * Rename _PyObject_VisitManagedDict() to PyObject_VisitManagedDict(). * Rename _PyObject_ClearManagedDict() to PyObject_ClearManagedDict(). * Document these functions.
This commit is contained in:
parent
6387b5313c
commit
fc2cb86d21
12 changed files with 77 additions and 24 deletions
|
|
@ -5649,7 +5649,7 @@ _PyObject_FreeInstanceAttributes(PyObject *self)
|
|||
}
|
||||
|
||||
int
|
||||
_PyObject_VisitManagedDict(PyObject *obj, visitproc visit, void *arg)
|
||||
PyObject_VisitManagedDict(PyObject *obj, visitproc visit, void *arg)
|
||||
{
|
||||
PyTypeObject *tp = Py_TYPE(obj);
|
||||
if((tp->tp_flags & Py_TPFLAGS_MANAGED_DICT) == 0) {
|
||||
|
|
@ -5672,7 +5672,7 @@ _PyObject_VisitManagedDict(PyObject *obj, visitproc visit, void *arg)
|
|||
}
|
||||
|
||||
void
|
||||
_PyObject_ClearManagedDict(PyObject *obj)
|
||||
PyObject_ClearManagedDict(PyObject *obj)
|
||||
{
|
||||
PyTypeObject *tp = Py_TYPE(obj);
|
||||
if((tp->tp_flags & Py_TPFLAGS_MANAGED_DICT) == 0) {
|
||||
|
|
|
|||
|
|
@ -1835,7 +1835,7 @@ subtype_traverse(PyObject *self, visitproc visit, void *arg)
|
|||
assert(base->tp_dictoffset == 0);
|
||||
if (type->tp_flags & Py_TPFLAGS_MANAGED_DICT) {
|
||||
assert(type->tp_dictoffset == -1);
|
||||
int err = _PyObject_VisitManagedDict(self, visit, arg);
|
||||
int err = PyObject_VisitManagedDict(self, visit, arg);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
|
@ -1905,7 +1905,7 @@ subtype_clear(PyObject *self)
|
|||
__dict__ slots (as in the case 'self.__dict__ is self'). */
|
||||
if (type->tp_flags & Py_TPFLAGS_MANAGED_DICT) {
|
||||
if ((base->tp_flags & Py_TPFLAGS_MANAGED_DICT) == 0) {
|
||||
_PyObject_ClearManagedDict(self);
|
||||
PyObject_ClearManagedDict(self);
|
||||
}
|
||||
}
|
||||
else if (type->tp_dictoffset != base->tp_dictoffset) {
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@ typevar_dealloc(PyObject *self)
|
|||
Py_XDECREF(tv->evaluate_bound);
|
||||
Py_XDECREF(tv->constraints);
|
||||
Py_XDECREF(tv->evaluate_constraints);
|
||||
_PyObject_ClearManagedDict(self);
|
||||
PyObject_ClearManagedDict(self);
|
||||
PyObject_ClearWeakRefs(self);
|
||||
|
||||
Py_TYPE(self)->tp_free(self);
|
||||
|
|
@ -216,7 +216,7 @@ typevar_traverse(PyObject *self, visitproc visit, void *arg)
|
|||
Py_VISIT(tv->evaluate_bound);
|
||||
Py_VISIT(tv->constraints);
|
||||
Py_VISIT(tv->evaluate_constraints);
|
||||
_PyObject_VisitManagedDict(self, visit, arg);
|
||||
PyObject_VisitManagedDict(self, visit, arg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -227,7 +227,7 @@ typevar_clear(typevarobject *self)
|
|||
Py_CLEAR(self->evaluate_bound);
|
||||
Py_CLEAR(self->constraints);
|
||||
Py_CLEAR(self->evaluate_constraints);
|
||||
_PyObject_ClearManagedDict((PyObject *)self);
|
||||
PyObject_ClearManagedDict((PyObject *)self);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -744,7 +744,7 @@ paramspec_dealloc(PyObject *self)
|
|||
|
||||
Py_DECREF(ps->name);
|
||||
Py_XDECREF(ps->bound);
|
||||
_PyObject_ClearManagedDict(self);
|
||||
PyObject_ClearManagedDict(self);
|
||||
PyObject_ClearWeakRefs(self);
|
||||
|
||||
Py_TYPE(self)->tp_free(self);
|
||||
|
|
@ -757,7 +757,7 @@ paramspec_traverse(PyObject *self, visitproc visit, void *arg)
|
|||
Py_VISIT(Py_TYPE(self));
|
||||
paramspecobject *ps = (paramspecobject *)self;
|
||||
Py_VISIT(ps->bound);
|
||||
_PyObject_VisitManagedDict(self, visit, arg);
|
||||
PyObject_VisitManagedDict(self, visit, arg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -765,7 +765,7 @@ static int
|
|||
paramspec_clear(paramspecobject *self)
|
||||
{
|
||||
Py_CLEAR(self->bound);
|
||||
_PyObject_ClearManagedDict((PyObject *)self);
|
||||
PyObject_ClearManagedDict((PyObject *)self);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1026,7 +1026,7 @@ typevartuple_dealloc(PyObject *self)
|
|||
typevartupleobject *tvt = (typevartupleobject *)self;
|
||||
|
||||
Py_DECREF(tvt->name);
|
||||
_PyObject_ClearManagedDict(self);
|
||||
PyObject_ClearManagedDict(self);
|
||||
PyObject_ClearWeakRefs(self);
|
||||
|
||||
Py_TYPE(self)->tp_free(self);
|
||||
|
|
@ -1165,14 +1165,14 @@ static int
|
|||
typevartuple_traverse(PyObject *self, visitproc visit, void *arg)
|
||||
{
|
||||
Py_VISIT(Py_TYPE(self));
|
||||
_PyObject_VisitManagedDict(self, visit, arg);
|
||||
PyObject_VisitManagedDict(self, visit, arg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
typevartuple_clear(PyObject *self)
|
||||
{
|
||||
_PyObject_ClearManagedDict(self);
|
||||
PyObject_ClearManagedDict(self);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue