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.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
