From 809008a658ee81daebb74c21f614eb3603d2f0d6 Mon Sep 17 00:00:00 2001 From: Stefan Behnel Date: Thu, 21 Aug 2008 07:01:51 +0200 Subject: [PATCH] new python_version.pxd for the Python C compile time version --- Cython/Includes/python.pxd | 1 + Cython/Includes/python_version.pxd | 32 ++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 Cython/Includes/python_version.pxd diff --git a/Cython/Includes/python.pxd b/Cython/Includes/python.pxd index 7ef6d473..9559db04 100644 --- a/Cython/Includes/python.pxd +++ b/Cython/Includes/python.pxd @@ -117,6 +117,7 @@ # ################################################################# +from python_version cimport * from python_ref cimport * from python_exc cimport * from python_module cimport * diff --git a/Cython/Includes/python_version.pxd b/Cython/Includes/python_version.pxd new file mode 100644 index 00000000..0e839704 --- /dev/null +++ b/Cython/Includes/python_version.pxd @@ -0,0 +1,32 @@ +# Python version constants +# +# It's better to evaluate these at runtime (i.e. C compile time) using +# +# if PY_MAJOR_VERSION >= 3: +# do_stuff_in_Py3_0_and_later() +# if PY_VERSION_HEX >= 0x02050000: +# do_stuff_in_Py2_5_and_later() +# +# than using the IF/DEF statements, which are evaluated at Cython +# compile time. This will keep your C code portable. + + +cdef extern from *: + # the complete version, e.g. 0x010502B2 == 1.5.2b2 + int PY_VERSION_HEX + + # the individual sections as plain numbers + int PY_MAJOR_VERSION + int PY_MINOR_VERSION + int PY_MICRO_VERSION + int PY_RELEASE_LEVEL + int PY_RELEASE_SERIAL + + # Note: PY_RELEASE_LEVEL is one of + # 0xA (alpha) + # 0xB (beta) + # 0xC (release candidate) + # 0xF (final) + + char[] PY_VERSION + char[] PY_PATCHLEVEL_REVISION -- 2.26.2