# API i wersjonowanie ABI

CPython (standardowa implementacja) ujawnia swój numer wersji w następujących makrach. Należy pamiętać, że odpowiadają one kodowi wersji, z którym został zbudowany, niekoniecznie wersji używanej w czasie działania.

Więcej informacji na temat stabilności API i ABI w różnych wersjach można znaleźć na stronie C API Stability.

`PY_MAJOR_VERSION`

  `3` w `3.4.1a2`.

`PY_MINOR_VERSION`

  `4` w `3.4.1a2`.

`PY_MICRO_VERSION`

  `1` w `3.4.1a2`.

`PY_RELEASE_LEVEL`

  `a` w `3.4.1a2`. Może to być `0xA` dla wersji alfa, `0xB` dla wersji beta, `0xC` dla wersji kandydującej do wydania lub `0xF` dla wersji finalnej.

`PY_RELEASE_SERIAL`

  `2` w `3.4.1a2`. Zero dla ostatecznych wydań.

`PY_VERSION_HEX`

  Numer wersji Pythona zakodowany w pojedynczej liczbie całkowitej.

  Podstawowe informacje wersji można znaleźć, traktując je jako 32-bitową liczbę w następujący sposób:

  Bajty | Bity (kolejność big endian) | Znaczenie | Wartość dla `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`

  Tak więc `3.4.1a2` jest hekswersją `0x030401a2`, a `3.10.0` jest hekswersją `0x030a00f0`.

Wszystkie podane makra są zdefiniowane w Include/patchlevel.h.