mirror of
https://github.com/python/cpython.git
synced 2025-08-01 15:43:13 +00:00
bpo-42747: Remove Py_TPFLAGS_HAVE_AM_SEND and make Py_TPFLAGS_HAVE_VERSION_TAG no-op (GH-27260)
* Remove code that checks Py_TPFLAGS_HAVE_VERSION_TAG The field is always present in the type struct, as explained in the added comment. * Remove Py_TPFLAGS_HAVE_AM_SEND The flag is not needed, and since it was added in 3.10 it can be removed now.
This commit is contained in:
parent
7d28a6eb90
commit
a4760cc32d
7 changed files with 24 additions and 56 deletions
|
@ -324,10 +324,6 @@ PyType_Modified(PyTypeObject *type)
|
|||
|
||||
Invariants:
|
||||
|
||||
- Py_TPFLAGS_VALID_VERSION_TAG is never set if
|
||||
Py_TPFLAGS_HAVE_VERSION_TAG is not set (in case of a
|
||||
bizarre MRO, see type_mro_modified()).
|
||||
|
||||
- before Py_TPFLAGS_VALID_VERSION_TAG can be set on a type,
|
||||
it must first be set on all super types.
|
||||
|
||||
|
@ -379,9 +375,6 @@ type_mro_modified(PyTypeObject *type, PyObject *bases) {
|
|||
PyObject *mro_meth = NULL;
|
||||
PyObject *type_mro_meth = NULL;
|
||||
|
||||
if (!_PyType_HasFeature(type, Py_TPFLAGS_HAVE_VERSION_TAG))
|
||||
return;
|
||||
|
||||
if (custom) {
|
||||
mro_meth = lookup_maybe_method(
|
||||
(PyObject *)type, &PyId_mro, &unbound);
|
||||
|
@ -404,8 +397,7 @@ type_mro_modified(PyTypeObject *type, PyObject *bases) {
|
|||
assert(PyType_Check(b));
|
||||
cls = (PyTypeObject *)b;
|
||||
|
||||
if (!_PyType_HasFeature(cls, Py_TPFLAGS_HAVE_VERSION_TAG) ||
|
||||
!PyType_IsSubtype(type, cls)) {
|
||||
if (!PyType_IsSubtype(type, cls)) {
|
||||
goto clear;
|
||||
}
|
||||
}
|
||||
|
@ -413,8 +405,7 @@ type_mro_modified(PyTypeObject *type, PyObject *bases) {
|
|||
clear:
|
||||
Py_XDECREF(mro_meth);
|
||||
Py_XDECREF(type_mro_meth);
|
||||
type->tp_flags &= ~(Py_TPFLAGS_HAVE_VERSION_TAG|
|
||||
Py_TPFLAGS_VALID_VERSION_TAG);
|
||||
type->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG;
|
||||
type->tp_version_tag = 0; /* 0 is not a valid version tag */
|
||||
}
|
||||
|
||||
|
@ -431,8 +422,6 @@ assign_version_tag(struct type_cache *cache, PyTypeObject *type)
|
|||
|
||||
if (_PyType_HasFeature(type, Py_TPFLAGS_VALID_VERSION_TAG))
|
||||
return 1;
|
||||
if (!_PyType_HasFeature(type, Py_TPFLAGS_HAVE_VERSION_TAG))
|
||||
return 0;
|
||||
if (!_PyType_HasFeature(type, Py_TPFLAGS_READY))
|
||||
return 0;
|
||||
|
||||
|
@ -5978,14 +5967,6 @@ type_ready_pre_checks(PyTypeObject *type)
|
|||
_PyObject_ASSERT((PyObject *)type, type->tp_call != NULL);
|
||||
}
|
||||
|
||||
/* Consistency check for Py_TPFLAGS_HAVE_AM_SEND - flag requires
|
||||
* type->tp_as_async->am_send to be present.
|
||||
*/
|
||||
if (type->tp_flags & Py_TPFLAGS_HAVE_AM_SEND) {
|
||||
_PyObject_ASSERT((PyObject *)type, type->tp_as_async != NULL);
|
||||
_PyObject_ASSERT((PyObject *)type, type->tp_as_async->am_send != NULL);
|
||||
}
|
||||
|
||||
/* Consistency checks for pattern matching
|
||||
* Py_TPFLAGS_SEQUENCE and Py_TPFLAGS_MAPPING are mutually exclusive */
|
||||
_PyObject_ASSERT((PyObject *)type, (type->tp_flags & COLLECTION_FLAGS) != COLLECTION_FLAGS);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue