Pending removal in Python 3.20
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+* :c:func:`!_PyObject_CallMethodId`, :c:func:`!_PyObject_GetAttrId` and
+ :c:func:`!_PyUnicode_FromId` are deprecated since 3.15 and will be removed in
+ 3.20. Instead, use :c:func:`PyUnicode_FromString()` and cache the result in
+ the module state, then call :c:func:`PyObject_CallMethod` or
+ :c:func:`PyObject_GetAttr`.
+ (Contributed by Victor Stinner in :gh:`141049`.)
+
* The ``cval`` field in :c:type:`PyComplexObject` (:gh:`128813`).
Use :c:func:`PyComplex_AsCComplex` and :c:func:`PyComplex_FromCComplex`
to convert a Python complex number to/from the C :c:type:`Py_complex`
use the :c:type:`PyBytesWriter` API instead.
(Contributed by Victor Stinner in :gh:`129813`.)
+* :c:func:`!_PyObject_CallMethodId`, :c:func:`!_PyObject_GetAttrId` and
+ :c:func:`!_PyUnicode_FromId` are deprecated since 3.15 and will be removed in
+ 3.20. Instead, use :c:func:`PyUnicode_FromString()` and cache the result in
+ the module state, then call :c:func:`PyObject_CallMethod` or
+ :c:func:`PyObject_GetAttr`.
+ (Contributed by Victor Stinner in :gh:`141049`.)
+
* Deprecate :c:member:`~PyComplexObject.cval` field of the
:c:type:`PyComplexObject` type.
Use :c:func:`PyComplex_AsCComplex` and :c:func:`PyComplex_FromCComplex`
/* Like PyObject_CallMethod(), but expect a _Py_Identifier*
as the method name. */
-PyAPI_FUNC(PyObject*) _PyObject_CallMethodId(
+Py_DEPRECATED(3.15) PyAPI_FUNC(PyObject*) _PyObject_CallMethodId(
PyObject *obj,
_Py_Identifier *name,
const char *format, ...);
// Alias for backward compatibility
#define _PyObject_Dump PyUnstable_Object_Dump
-PyAPI_FUNC(PyObject*) _PyObject_GetAttrId(PyObject *, _Py_Identifier *);
+Py_DEPRECATED(3.15) PyAPI_FUNC(PyObject*) _PyObject_GetAttrId(PyObject *, _Py_Identifier *);
PyAPI_FUNC(PyObject **) _PyObject_GetDictPtr(PyObject *);
PyAPI_FUNC(void) PyObject_CallFinalizer(PyObject *);
// Return an interned Unicode object for an Identifier; may fail if there is no
// memory.
-PyAPI_FUNC(PyObject*) _PyUnicode_FromId(_Py_Identifier*);
+Py_DEPRECATED(3.15) PyAPI_FUNC(PyObject*) _PyUnicode_FromId(_Py_Identifier*);
--- /dev/null
+:c:func:`!_PyObject_CallMethodId`, :c:func:`!_PyObject_GetAttrId` and
+:c:func:`!_PyUnicode_FromId` are deprecated since 3.15 and will be removed in
+3.20. Instead, use :c:func:`PyUnicode_FromString()` and cache the result in
+the module state, then call :c:func:`PyObject_CallMethod` or
+:c:func:`PyObject_GetAttr`. Patch by Victor Stinner.
return null_error(tstate);
}
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
PyObject *callable = _PyObject_GetAttrId(obj, name);
+_Py_COMP_DIAG_POP
if (callable == NULL) {
return NULL;
}
_PyObject_GetAttrId(PyObject *v, _Py_Identifier *name)
{
PyObject *result;
+_Py_COMP_DIAG_PUSH
+_Py_COMP_DIAG_IGNORE_DEPR_DECLS
PyObject *oname = _PyUnicode_FromId(name); /* borrowed */
+_Py_COMP_DIAG_POP
if (!oname)
return NULL;
result = PyObject_GetAttr(v, oname);