diff options
author | Marc Mueller <30130371+cdce8p@users.noreply.github.com> | 2023-08-10 15:55:47 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-10 15:55:47 (GMT) |
commit | 16dcce21768ba381996a88ac8c255bf1490b3680 (patch) | |
tree | b3a2fb78427046927e4180f2b21c81d2b2b29301 | |
parent | e4275f4df36a7cdd58cd4daa7d65b1947a2593d3 (diff) | |
download | cpython-16dcce21768ba381996a88ac8c255bf1490b3680.zip cpython-16dcce21768ba381996a88ac8c255bf1490b3680.tar.gz cpython-16dcce21768ba381996a88ac8c255bf1490b3680.tar.bz2 |
gh-107810: Improve DeprecationWarning for metaclasses with custom tp_new (GH-107834)
Co-authored-by: Kirill Podoprigora <kirill.bast9@mail.ru>
-rw-r--r-- | Lib/test/test_capi/test_misc.py | 2 | ||||
-rw-r--r-- | Misc/NEWS.d/next/C API/2023-08-10-11-12-25.gh-issue-107810.oJ40Qx.rst | 1 | ||||
-rw-r--r-- | Objects/typeobject.c | 6 |
3 files changed, 5 insertions, 4 deletions
diff --git a/Lib/test/test_capi/test_misc.py b/Lib/test/test_capi/test_misc.py index 001d37d..c812122 100644 --- a/Lib/test/test_capi/test_misc.py +++ b/Lib/test/test_capi/test_misc.py @@ -611,7 +611,7 @@ class CAPITest(unittest.TestCase): # Class creation from C with warnings_helper.check_warnings( - ('.*custom tp_new.*in Python 3.14.*', DeprecationWarning), + ('.* _testcapi.Subclass .* custom tp_new.*in Python 3.14.*', DeprecationWarning), ): sub = _testcapi.make_type_with_base(Base) self.assertTrue(issubclass(sub, Base)) diff --git a/Misc/NEWS.d/next/C API/2023-08-10-11-12-25.gh-issue-107810.oJ40Qx.rst b/Misc/NEWS.d/next/C API/2023-08-10-11-12-25.gh-issue-107810.oJ40Qx.rst new file mode 100644 index 0000000..c8a1f6d --- /dev/null +++ b/Misc/NEWS.d/next/C API/2023-08-10-11-12-25.gh-issue-107810.oJ40Qx.rst @@ -0,0 +1 @@ +Improve :exc:`DeprecationWarning` for uses of :c:type:`PyType_Spec` with metaclasses that have custom ``tp_new``. diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 71e96f5..aca14e7 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -4264,9 +4264,9 @@ _PyType_FromMetaclass_impl( if (_allow_tp_new) { if (PyErr_WarnFormat( PyExc_DeprecationWarning, 1, - "Using PyType_Spec with metaclasses that have custom " - "tp_new is deprecated and will no longer be allowed in " - "Python 3.14.") < 0) { + "Type %s uses PyType_Spec with a metaclass that has custom " + "tp_new. This is deprecated and will no longer be allowed in " + "Python 3.14.", spec->name) < 0) { goto finally; } } |