+++++++++++++++++++++++
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
`_