◐ Shell
clean mode source ↗

gh-112026: Restore removed _PyDict_GetItemStringWithError() by vstinner · Pull Request #112119 · python/cpython

@vstinner

@vstinner vstinner commented

Nov 15, 2023

edited by bedevere-app Bot

Loading

Restore the removed _PyDict_GetItemStringWithError() function. It is
used by numpy.

@vstinner

@serhiy-storchaka: This private function is no longer used by Python, but I restore it to unblock numpy on Python 3.13 (keep dependency in the Python ecosystem). Later, I plan to deprecate this function and write documentation on how to update existing code using it. Apparently, just removing private functions without providing any solution didn't "please" users.

@serhiy-storchaka

Is not PyDict_GetItemStringRef() the solution? It bhas different interface, but it is easy to write a wrapper.

PyObject *
_PyDict_GetItemStringWithError(PyObject *obj, const char *key)
{
    PyObject *value;
    (void)PyDict_GetItemStringRef(obj, key, &value);
    if (Py_REFCNT(value) == 1) {
        Py_DECREF(value);
        return NULL;
    }
    Py_DECREF(value);
    return value;
}

@vstinner

Is not PyDict_GetItemStringRef() the solution? It bhas different interface, but it is easy to write a wrapper.

Solution to which problem? numpy doesn't built if Python C API doesn't contain _PyDict_GetItemStringWithError(). I restored the function to unblock numpy.

I plan to update numpy, deprecate _PyDict_GetItemStringWithError(), and later remove it.

aisk pushed a commit to aisk/cpython that referenced this pull request

Feb 11, 2024
…thon#112119)

Restore the removed _PyDict_GetItemStringWithError() function. It is
used by numpy.

@ngoldbaum

I plan to update numpy

See numpy/numpy#26282, would also appreciate code review if you have time.

@vstinner

Is not PyDict_GetItemStringRef() the solution? It bhas different interface, but it is easy to write a wrapper.

I wrote #119855 to deprecate _PyDict_GetItemStringWithError().

Glyphack pushed a commit to Glyphack/cpython that referenced this pull request

Sep 2, 2024
…thon#112119)

Restore the removed _PyDict_GetItemStringWithError() function. It is
used by numpy.