https://github.com/python/cpython/commit/38df9976cccd3358047dba79e73725d1e5ae5a6b
commit: 38df9976cccd3358047dba79e73725d1e5ae5a6b
branch: main
author: sobolevn <[email protected]>
committer: sobolevn <[email protected]>
date: 2026-06-30T16:58:31+03:00
summary:
gh-152546: Refactor `mappingproxy.__new__` to use `PyDictProxy_New` (#152547)
files:
M Objects/descrobject.c
diff --git a/Objects/descrobject.c b/Objects/descrobject.c
index 30444b7d677424..1c068e96f24532 100644
--- a/Objects/descrobject.c
+++ b/Objects/descrobject.c
@@ -1253,32 +1253,6 @@ mappingproxy_check_mapping(PyObject *mapping)
return 0;
}
-/*[clinic input]
-@classmethod
-mappingproxy.__new__ as mappingproxy_new
-
- mapping: object
-
-Read-only proxy of a mapping.
-[clinic start generated code]*/
-
-static PyObject *
-mappingproxy_new_impl(PyTypeObject *type, PyObject *mapping)
-/*[clinic end generated code: output=65f27f02d5b68fa7 input=c156df096ef7590c]*/
-{
- mappingproxyobject *mappingproxy;
-
- if (mappingproxy_check_mapping(mapping) == -1)
- return NULL;
-
- mappingproxy = PyObject_GC_New(mappingproxyobject, &PyDictProxy_Type);
- if (mappingproxy == NULL)
- return NULL;
- mappingproxy->mapping = Py_NewRef(mapping);
- _PyObject_GC_TRACK(mappingproxy);
- return (PyObject *)mappingproxy;
-}
-
PyObject *
PyDictProxy_New(PyObject *mapping)
{
@@ -1295,6 +1269,22 @@ PyDictProxy_New(PyObject *mapping)
return (PyObject *)pp;
}
+/*[clinic input]
+@classmethod
+mappingproxy.__new__ as mappingproxy_new
+
+ mapping: object
+
+Read-only proxy of a mapping.
+[clinic start generated code]*/
+
+static PyObject *
+mappingproxy_new_impl(PyTypeObject *type, PyObject *mapping)
+/*[clinic end generated code: output=65f27f02d5b68fa7 input=c156df096ef7590c]*/
+{
+ return PyDictProxy_New(mapping);
+}
+
/* --- Wrapper object for "slot" methods --- */
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]