+++++++++++++++++++++++ pythoncapi-compat users +++++++++++++++++++++++ Examples of projects using pythoncapi_compat.h ============================================== * `bitarray `_: ``bitarray/_bitarray.c`` uses ``Py_SET_SIZE()`` (`pythoncapi_compat.h copy `__) * `datatable `_ (`commit `__) * `guppy3 `_ (`commit `__) * `immutables `_: ``immutables/_map.c`` uses ``Py_SET_SIZE()`` (`pythoncapi_compat.h copy `__) * `Mercurial (hg) `_ uses ``Py_SET_TYPE()`` (`commit `__, `pythoncapi_compat.h copy `__) * `mypy `_ (mypyc, `commit `__) * `numpy `_: `pythoncapi-compat Git submodule `_ * `pybluez `_ (`commit `__) * `python-snappy `_ (`commit `__) * `python-zstandard `_ uses ``Py_SET_TYPE()`` and ``Py_SET_SIZE()`` (`commit `__): Mercurial extension. * `python-zstd `_ (`commit `__) * `hollerith `_ ``src/writer.c`` uses ``PyObject_CallOneArg() and other Python 3.9 apis`` (`pythoncapi_compat.h copy `__) * `PyTorch `_ (`pythoncapi_compat.h copy `__) Projects not using pythoncapi_compat.h ====================================== Projects not using ``pythoncapi_compat.h``: * numpy has its own compatibility layer, ``npy_pycompat.h`` and ``npy_3kcompat.h`` header files. It supports more C compilers than pythoncapi_compat.h: it supports ``__STRICT_ANSI__`` (ISO C90) for example. Rejected `PR 18713: MAINT: Use pythoncapi_compat.h in npy_3kcompat.h `_ (when it was rejected, numpy still had code for compatibility with Python 2.7). * Cython doesn't use pythoncapi_compat.h: `see Cython issue #3934 `_. For example, `ModuleSetupCode.c `_ provides functions like ``__Pyx_SET_REFCNT()``. Project with a strict contributor agreement: * `zodbpickle `_