summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2023-08-11 14:12:50 (GMT)
committerGitHub <noreply@github.com>2023-08-11 14:12:50 (GMT)
commit431ce239d2a906ec4d9a27a83549258d7cef3701 (patch)
tree9ad3ab3a7bd1f57494464f7e19a40adbf3f42d1e
parent585b4cc3bd57480f8bd04ddbc6f098e55d311582 (diff)
downloadcpython-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.py2
-rw-r--r--Misc/NEWS.d/next/C API/2023-08-10-11-12-25.gh-issue-107810.oJ40Qx.rst1
-rw-r--r--Objects/typeobject.c6
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;
}
}