The pythoncapi-compat
project can be used to write a C or C++ extension
supporting a wide range of Python versions with a single code base. It is made
of the pythoncapi_compat.h
header file and the upgrade_pythoncapi.py
script.
upgrade_pythoncapi.py
requires Python 3.6 or newer.
See the documentation at ReadTheDocs for more details.
To upgrade a specific file:
python3 upgrade_pythoncapi.py module.c
To upgrade all C/C++ files in a directory:
python3 upgrade_pythoncapi.py src/
To only replace op->ob_type
with Py_TYPE(op)
, select the Py_TYPE
operation with:
python3 upgrade_pythoncapi.py -o Py_TYPE module.c
Or the opposite, to apply all operations but leave op->ob_type
unchanged,
deselect the Py_TYPE
operation with:
python3 upgrade_pythoncapi.py -o all,-Py_TYPE module.c
If you want to pythoncapi_compat.h
to your code base, use the
upgrade_pythoncapi.py
tool to fetch it:
python3 upgrade_pythoncapi.py --download PATH
This project is distributed under the Zero Clause BSD (0BSD) license and is covered by the PSF Code of Conduct.