From 809008a658ee81daebb74c21f614eb3603d2f0d6 Mon Sep 17 00:00:00 2001
From: Stefan Behnel <scoder@users.berlios.de>
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 7ef6d473b..9559db04c 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 000000000..0e8397048
--- /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.30.9