bpo-39573: Convert Py_TYPE() and Py_SIZE() back to macros (GH-23366)
This change partically reverts
commit ad3252bad905d41635bcbb4b76db30d570cf0087
and the commit fe2978b3b940fe2478335e3a2ca5ad22338cdf9c.
Many third party C extension modules rely on the ability of using
Py_TYPE() to set an object type: "Py_TYPE(obj) = type;" or to set an
object type using: "Py_SIZE(obj) = size;".
diff --git a/Doc/c-api/structures.rst b/Doc/c-api/structures.rst
index 37602ed..37072d3 100644
--- a/Doc/c-api/structures.rst
+++ b/Doc/c-api/structures.rst
@@ -68,9 +68,7 @@
Return a :term:`borrowed reference`.
- .. versionchanged:: 3.10
- :c:func:`Py_TYPE()` is changed to the inline static function.
- Use :c:func:`Py_SET_TYPE()` to set an object type.
+ The :c:func:`Py_SET_TYPE` function must be used to set an object type.
.. c:function:: int Py_IS_TYPE(PyObject *o, PyTypeObject *type)
@@ -108,9 +106,7 @@
Get the size of the Python object *o*.
- .. versionchanged:: 3.10
- :c:func:`Py_SIZE()` is changed to the inline static function.
- Use :c:func:`Py_SET_SIZE()` to set an object size.
+ The :c:func:`Py_SET_SIZE` function must be used to set an object size.
.. c:function:: void Py_SET_SIZE(PyVarObject *o, Py_ssize_t size)