diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2023-08-11 14:12:50 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-11 14:12:50 (GMT) |
commit | 431ce239d2a906ec4d9a27a83549258d7cef3701 (patch) | |
tree | 9ad3ab3a7bd1f57494464f7e19a40adbf3f42d1e | |
parent | 585b4cc3bd57480f8bd04ddbc6f098e55d311582 (diff) | |
download | cpython-431ce239d2a906ec4d9a27a83549258d7cef3701.zip cpython-431ce239d2a906ec4d9a27a83549258d7cef3701.tar.gz cpython-431ce239d2a906ec4d9a27a83549258d7cef3701.tar.bz2 |
[3.12] gh-107810: Improve DeprecationWarning for metaclasses with custom tp_new (GH-107834) (#107864)
gh-107810: Improve DeprecationWarning for metaclasses with custom tp_new (GH-107834)
(cherry picked from commit 16dcce21768ba381996a88ac8c255bf1490b3680)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
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 cd37fc7..3f2736d 100644 --- a/Lib/test/test_capi/test_misc.py +++ b/Lib/test/test_capi/test_misc.py @@ -740,7 +740,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 40e187d..5c71c28 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -4242,9 +4242,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; } } |