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.

Służy do porównywania liczb, np. #if PY_VERSION_HEX >= ....

Ta strona wersji jest również dostępna za pośrednictwem symbolu Py_Version.

const unsigned long Py_Version
Część stabilnego ABI od wersji 3.11.

Wersja Python runtime jest zakodowana w pojedynczej stałej liczba całkowita, w tym samym formacie co makro PY_VERSION_HEX. Zawiera on Python wersja używany w czasie wykonywania.

Added in version 3.11.

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