# Керування версіями API та ABI

CPython розкриває номер своєї версії в наступних макросах. Зауважте, що вони відповідають коду версії, з яким зібрано, не обов’язково версії, яка використовується під час виконання.

Перегляньте Стабільність C API для обговорення стабільності API та ABI у різних версіях.

`PY_MAJOR_VERSION`

  `3` в `3.4.1a2`.

`PY_MINOR_VERSION`

  `4` в `3.4.1a2`.

`PY_MICRO_VERSION`

  `1` в `3.4.1a2`.

`PY_RELEASE_LEVEL`

  `a` в `3.4.1a2`. Це може бути `0xA` для альфа-версії, `0xB` для бета-версії, `0xC` для кандидата на випуск або `0xF` для фіналу.

`PY_RELEASE_SERIAL`

  `2` в `3.4.1a2`. Нуль для остаточних випусків.

`PY_VERSION_HEX`

  Номер версії Python, закодований одним цілим числом.

  Базову інформацію про версію можна знайти, розглядаючи її як 32-розрядне число таким чином:

  Байти | Біти (великий порядок байтів) | Значення | Значення для `3.4.1a2`
  --- | --- | --- | ---
  1 | 1-8 | `PY_MAJOR_VERSION` | `0x03`
  2 | 9-16 | `PY_MINOR_VERSION` | `0x04`
  3 | 17-24 | `PY_MICRO_VERSION` | `0x01`
  4 | 25-28 | `PY_RELEASE_LEVEL` | `0xA`
  29-32 | `PY_RELEASE_SERIAL` | `0x2`

  Таким чином, `3.4.1a2` є шістнадцятковою версією `0x030401a2`, а `3.10.0` є шістнадцятковою версією `0x030a00f0`.

Усі вказані макроси визначено в Include/patchlevel.h.