Python

API와 ABI 버전 붙이기

빌드 타임 버전 상수

CPython은 다음 매크로에서 버전 번호를 노출합니다. 이 매크로들은 코드가 빌드 될 때 사용된 버전에 대응한다는 점에 유의하십시오. 런타임 에 사용되는 버전은 Py_Version 을 참조하십시오.

버전에 따른 API 및 ABI 안정성에 관한 논의는 C API 및 ABI 안정성 을 참조하십시오.

PY_MAJOR_VERSION

3.4.1a23.

PY_MINOR_VERSION

3.4.1a24.

PY_MICRO_VERSION

3.4.1a21.

PY_RELEASE_LEVEL

3.4.1a2a. 알파는 0xA, 베타는 0xB, 배포 후보는 0xC, 최종은 0xF 가 될 수 있습니다.

완전성을 위해, 해당 값들은 다음과 같은 매크로로 사용할 수 있습니다: PY_RELEASE_LEVEL_ALPHA (0xA), PY_RELEASE_LEVEL_BETA (0xB), PY_RELEASE_LEVEL_GAMMA (0xC), 그리고 PY_RELEASE_LEVEL_FINAL (0xF).

PY_RELEASE_SERIAL

3.4.1a22. 최종 배포는 0.

PY_VERSION_HEX

단일 정수로 인코딩된 파이썬 버전 번호입니다. 인코딩에 대한 자세한 내용은 Py_PACK_FULL_VERSION() 을 참조하십시오.

이것은 숫자 비교 시 사용하며, 예를 들어 #if PY_VERSION_HEX >= ... 와 같이 사용할 수 있습니다.

PY_VERSION

문자열 형태의 파이썬 버전입니다. 예: "3.4.1a2".

이 매크로들은 Include/patchlevel.h 에 정의되어 있습니다.

런타임 버전

const unsigned long Py_Version
…의 일부 안정 ABI 버전 3.11 이후로.

단일 상수 정수로 인코딩된 파이썬 런타임 버전 번호입니다. 인코딩에 대한 자세한 내용은 Py_PACK_FULL_VERSION() 을 참조하십시오. 이 값은 런타임에 사용되는 파이썬 버전을 포함합니다.

이것은 숫자 비교 시 사용하며, 예를 들어 if (Py_Version >= ...) 와 같이 사용할 수 있습니다.

Added in version 3.11.

비트 패킹 매크로

uint32_t Py_PACK_FULL_VERSION(int major, int minor, int micro, int release_level, int release_serial)
…의 일부 안정 ABI 버전 3.14 이후로.

다음 구조를 가진 단일 32비트 정수로 인코딩된 주어진 버전을 반환합니다.

인수

비트 수

비트 마스크

비트 시프트

예시 값

3.4.1a2

3.10.0

major

8

0xFF000000

24

0x03

0x03

minor

8

0x00FF0000

16

0x04

0x0A

micro

8

0x0000FF00

8

0x01

0x00

release_level

4

0x000000F0

4

0xA

0xF

release_serial

4

0x0000000F

0

0x2

0x0

예:

버전

Py_PACK_FULL_VERSION 인자

인코딩된 버전

3.4.1a2

(3, 4, 1, 0xA, 2)

0x030401a2

3.10.0

(3, 10, 0, 0xF, 0)

0x030a00f0

인수의 범위를 벗어난 비트는 무시됩니다. 즉, 매크로는 다음과 같이 정의될 수 있습니다.

#ifndef Py_PACK_FULL_VERSION
#define Py_PACK_FULL_VERSION(X, Y, Z, LEVEL, SERIAL) ( \
   (((X) & 0xff) << 24) |                              \
   (((Y) & 0xff) << 16) |                              \
   (((Z) & 0xff) << 8) |                               \
   (((LEVEL) & 0xf) << 4) |                            \
   (((SERIAL) & 0xf) << 0))
#endif

Py_PACK_FULL_VERSION``은 기본적으로 ``#if 지시문에서 사용하기 위한 매크로이지만, 내보내진 함수로도 사용할 수 있습니다.

Added in version 3.14.

uint32_t Py_PACK_VERSION(int major, int minor)
…의 일부 안정 ABI 버전 3.14 이후로.

Py_PACK_FULL_VERSION(major, minor, 0, 0, 0) 와 동일합니다. 결과는 실제 파이썬 배포 버전과 일치하지 않으나, 숫자 비교 시 유용합니다.

Added in version 3.14.