
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 Include/patchlevel.h.
