diff options
author | Victor Stinner <vstinner@python.org> | 2023-11-15 17:10:06 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-15 17:10:06 (GMT) |
commit | bd2f1485b089bd38d123b4d202a37e567f119482 (patch) | |
tree | 5d1bde9b3388f7a19cec276386532173e44f66ba | |
parent | ec055073673d5b949aa81311405d92159bab342e (diff) | |
download | cpython-bd2f1485b089bd38d123b4d202a37e567f119482.zip cpython-bd2f1485b089bd38d123b4d202a37e567f119482.tar.gz cpython-bd2f1485b089bd38d123b4d202a37e567f119482.tar.bz2 |
gh-112026: Restore removed _PyDict_GetItemStringWithError() (#112119)
Restore the removed _PyDict_GetItemStringWithError() function. It is
used by numpy.
-rw-r--r-- | Include/cpython/dictobject.h | 2 | ||||
-rw-r--r-- | Misc/NEWS.d/next/C API/2023-11-15-17-10-09.gh-issue-112026.ts9yyn.rst | 2 | ||||
-rw-r--r-- | Objects/dictobject.c | 14 |
3 files changed, 17 insertions, 1 deletions
diff --git a/Include/cpython/dictobject.h b/Include/cpython/dictobject.h index 91ddc08..944965f 100644 --- a/Include/cpython/dictobject.h +++ b/Include/cpython/dictobject.h @@ -34,7 +34,7 @@ typedef struct { PyAPI_FUNC(PyObject *) _PyDict_GetItem_KnownHash(PyObject *mp, PyObject *key, Py_hash_t hash); - +PyAPI_FUNC(PyObject *) _PyDict_GetItemStringWithError(PyObject *, const char *); PyAPI_FUNC(PyObject *) PyDict_SetDefault( PyObject *mp, PyObject *key, PyObject *defaultobj); diff --git a/Misc/NEWS.d/next/C API/2023-11-15-17-10-09.gh-issue-112026.ts9yyn.rst b/Misc/NEWS.d/next/C API/2023-11-15-17-10-09.gh-issue-112026.ts9yyn.rst new file mode 100644 index 0000000..7d54f6b --- /dev/null +++ b/Misc/NEWS.d/next/C API/2023-11-15-17-10-09.gh-issue-112026.ts9yyn.rst @@ -0,0 +1,2 @@ +Restore the removed ``_PyDict_GetItemStringWithError()`` function. It is +used by numpy. Patch by Victor Stinner. diff --git a/Objects/dictobject.c b/Objects/dictobject.c index 556c74d..70f424e 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -1842,6 +1842,20 @@ _PyDict_GetItemIdWithError(PyObject *dp, _Py_Identifier *key) return _PyDict_GetItem_KnownHash(dp, kv, hash); // borrowed reference } +PyObject * +_PyDict_GetItemStringWithError(PyObject *v, const char *key) +{ + PyObject *kv, *rv; + kv = PyUnicode_FromString(key); + if (kv == NULL) { + return NULL; + } + rv = PyDict_GetItemWithError(v, kv); + Py_DECREF(kv); + return rv; +} + + /* Fast version of global value lookup (LOAD_GLOBAL). * Lookup in globals, then builtins. * |