Issue #22079: Deprecation warning now is issued in PyType_Ready() instead of

raising TypeError when statically allocated type subclasses dynamically
allocated type
This commit is contained in:
Serhiy Storchaka 2015-03-22 09:46:36 +02:00
parent 52027c301a
commit d357b89f0b
1 changed files with 8 additions and 5 deletions

View File

@ -4803,11 +4803,14 @@ PyType_Ready(PyTypeObject *type)
PyObject *b = PyTuple_GET_ITEM(bases, i);
if (PyType_Check(b) &&
(((PyTypeObject *)b)->tp_flags & Py_TPFLAGS_HEAPTYPE)) {
PyErr_Format(PyExc_TypeError,
"type '%.100s' is not dynamically allocated but "
"its base type '%.100s' is dynamically allocated",
type->tp_name, ((PyTypeObject *)b)->tp_name);
goto error;
char buf[300];
PyOS_snprintf(buf, sizeof(buf),
"type '%.100s' is not dynamically allocated but "
"its base type '%.100s' is dynamically allocated",
type->tp_name, ((PyTypeObject *)b)->tp_name);
if (PyErr_Warn(PyExc_DeprecationWarning, buf) < 0)
goto error;
break;
}
}