STINNER Victor <vstin...@python.org> added the comment:

I changed the issue title to restrict its scope: "[C API] Avoid accessing 
PyObject and PyVarObject members directly: add Py_SET_TYPE() and Py_IS_TYPE(), 
disallow Py_TYPE(obj)=type".

Making PyObject and PyVarObject structures opaque is a broader topic which 
should be splited into sub-issues.

"Py_TYPE(obj)=type;" is now disallowed. I consider that the work of this issue 
is now completed and I close the issue.

Thanks everyone who help to fix these tedious issues!

You can continue to use this issue if you need my help to adapt your C 
extensions to Py_SET_TYPE()/Py_SET_SIZE().

See also the upgrade_pythoncapi.py script of the pythoncapi_compat project 
which helps to port your C extensions without losing support for old Python 
versions:
https://github.com/pythoncapi/pythoncapi_compat

See also the Py_TYPE() change announcement on the capi-sig list:
https://mail.python.org/archives/list/capi-...@python.org/thread/WGRLTHTHC32DQTACPPX36TPR2GLJAFRB/

----------
resolution:  -> fixed
stage: patch review -> resolved
status: open -> closed
title: [C API] Make PyObject an opaque structure in the limited C API -> [C 
API] Avoid accessing PyObject and PyVarObject members directly: add 
Py_SET_TYPE() and Py_IS_TYPE(), disallow Py_TYPE(obj)=type
versions: +Python 3.11 -Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue39573>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to