API と ABI のバージョニング

PY_VERSION_HEX は、Python のバージョン番号を単一の整数に符号化したものです。

例えば、PY_VERSION_HEX0x030401a2 が設定されていれば、その値を下記のように32ビットの値として扱うことで、バージョン情報を得ることができます:

bytes ビット (ビッグエンディアンオーダ) 意味
1 1-8 PY_MAJOR_VERSION (3.4.1a2 中の 3)
2 9-16 PY_MINOR_VERSION (3.4.1a2 中の 4)
3 17-24 PY_MICRO_VERSION (3.4.1a2 中の 1)
4 25-28 PY_RELEASE_LEVEL (アルファ版では 0xA、ベータ版では 0xB、リリース候補版では 0xC、そして最終版は 0xF)、この例ではアルファ版を意味しています。
  29-32 PY_RELEASE_SERIAL (3.4.1a2 中の 2、最終リリースでは 0)

従って、3.4.1a2 は hexversionで 0x030401a2 です。

これらのマクロは Include/patchlevel.h で定義されています。