summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorFurkan Onder <furkanonder@protonmail.com>2024-02-25 20:55:19 (GMT)
committerGitHub <noreply@github.com>2024-02-25 20:55:19 (GMT)
commit8f5be78bce95deb338e2e1cf13a0a579b3b42dd2 (patch)
tree1f51737198ead1c7fd607b8fb6452a345b0bd5b3 /Modules
parentf082a05c67cc949ccd1a940ecf6721953bbdc34f (diff)
downloadcpython-8f5be78bce95deb338e2e1cf13a0a579b3b42dd2.zip
cpython-8f5be78bce95deb338e2e1cf13a0a579b3b42dd2.tar.gz
cpython-8f5be78bce95deb338e2e1cf13a0a579b3b42dd2.tar.bz2
gh-72249: Include the module name in the repr of partial object (GH-101910)
Co-authored-by: Anilyka Barry <vgr255@live.ca>
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_functoolsmodule.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/Modules/_functoolsmodule.c b/Modules/_functoolsmodule.c
index 9ab8471..d2212d4 100644
--- a/Modules/_functoolsmodule.c
+++ b/Modules/_functoolsmodule.c
@@ -365,6 +365,8 @@ partial_repr(partialobject *pto)
{
PyObject *result = NULL;
PyObject *arglist;
+ PyObject *mod;
+ PyObject *name;
Py_ssize_t i, n;
PyObject *key, *value;
int status;
@@ -399,13 +401,28 @@ partial_repr(partialobject *pto)
if (arglist == NULL)
goto done;
}
- result = PyUnicode_FromFormat("%s(%R%U)", Py_TYPE(pto)->tp_name,
- pto->fn, arglist);
+
+ mod = _PyType_GetModuleName(Py_TYPE(pto));
+ if (mod == NULL) {
+ goto error;
+ }
+ name = PyType_GetQualName(Py_TYPE(pto));
+ if (name == NULL) {
+ Py_DECREF(mod);
+ goto error;
+ }
+ result = PyUnicode_FromFormat("%S.%S(%R%U)", mod, name, pto->fn, arglist);
+ Py_DECREF(mod);
+ Py_DECREF(name);
Py_DECREF(arglist);
done:
Py_ReprLeave((PyObject *)pto);
return result;
+ error:
+ Py_DECREF(arglist);
+ Py_ReprLeave((PyObject *)pto);
+ return NULL;
}
/* Pickle strategy: