API and ABI Versioning#
CPython exposes its version number in the following macros. Note that these correspond to the version code is built with, not necessarily the version used at run time.
See C API Stability for a discussion of API and ABI stability across versions.
-
PY_MAJOR_VERSION#
The
3
in3.4.1a2
.
-
PY_MINOR_VERSION#
The
4
in3.4.1a2
.
-
PY_MICRO_VERSION#
The
1
in3.4.1a2
.
-
PY_RELEASE_LEVEL#
The
a
in3.4.1a2
. This can be0xA
for alpha,0xB
for beta,0xC
for release candidate or0xF
for final.
-
PY_RELEASE_SERIAL#
The
2
in3.4.1a2
. Zero for final releases.
-
PY_VERSION_HEX#
The Python version number encoded in a single integer.
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
Value for
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
Thus
3.4.1a2
is hexversion0x030401a2
and3.10.0
is hexversion0x030a00f0
.
All the given macros are defined in Include/patchlevel.h.