C API: Add replacements for PyObject_HasAttr() etc #108511
Description
Feature or enhancement
Has this already been discussed elsewhere?
No response given
Links to previous discussion of this feature:
Proposal:
Functions PyDict_GetItem()
, PyDict_GetItemString()
, PyMapping_HasKey()
, PyMapping_HasKeyString()
, PyObject_HasAttr()
, PyObject_HasAttrString()
and PySys_GetObject()
have a flaw -- they clear any error raised inside the function, including important and critical errors. They cannot be fixed, because the user code which use them do not handle errors. There are replacements free from this flaw for PyDict_GetItem()
(PyDict_GetItemWithError()
and PyDict_GetItemRef()
) and, in some applications, to PyDict_GetItemString()
(PyDict_GetItemRefString()
).
We need new functions similar to PyMapping_HasKey()
, PyMapping_HasKeyString()
, PyObject_HasAttr()
, PyObject_HasAttrString()
which return three-state value (1
- yes, 0
-- no, and -1
--error). What should be their names? Add the WithError
suffix? Add the Ex
sufix? Add the 2
suffix?