diff options
author | Furkan Onder <furkanonder@protonmail.com> | 2024-02-25 20:55:19 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-25 20:55:19 (GMT) |
commit | 8f5be78bce95deb338e2e1cf13a0a579b3b42dd2 (patch) | |
tree | 1f51737198ead1c7fd607b8fb6452a345b0bd5b3 /Modules | |
parent | f082a05c67cc949ccd1a940ecf6721953bbdc34f (diff) | |
download | cpython-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.c | 21 |
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: |