kbe/src/lib/python/Doc/c-api/apiabiversion.rst
.. highlightlang:: c
.. _apiabiversion:
API and ABI Versioning
PY_VERSION_HEX is the Python version number encoded in a single integer.
For example if the PY_VERSION_HEX is set to 0x030401a2, the underlying
version information can be found by treating it as a 32 bit number in
the following manner:
+-------+-------------------------+------------------------------------------------+
| Bytes | Bits (big endian order) | Meaning |
+=======+=========================+================================================+
| 1 | 1-8 | PY_MAJOR_VERSION (the 3 in |
| | | 3.4.1a2) |
+-------+-------------------------+------------------------------------------------+
| 2 | 9-16 | PY_MINOR_VERSION (the 4 in |
| | | 3.4.1a2) |
+-------+-------------------------+------------------------------------------------+
| 3 | 17-24 | PY_MICRO_VERSION (the 1 in |
| | | 3.4.1a2) |
+-------+-------------------------+------------------------------------------------+
| 4 | 25-28 | PY_RELEASE_LEVEL (0xA for alpha, |
| | | 0xB for beta, 0xC for release |
| | | candidate and 0xF for final), in this |
| | | case it is alpha. |
+-------+-------------------------+------------------------------------------------+
| | 29-32 | PY_RELEASE_SERIAL (the 2 in |
| | | 3.4.1a2, zero for final releases) |
+-------+-------------------------+------------------------------------------------+
Thus 3.4.1a2 is hexversion 0x030401a2.
All the given macros are defined in :source:Include/patchlevel.h.