new python_version.pxd for the Python C compile time version
authorStefan Behnel <scoder@users.berlios.de>
Thu, 21 Aug 2008 05:01:51 +0000 (07:01 +0200)
committerStefan Behnel <scoder@users.berlios.de>
Thu, 21 Aug 2008 05:01:51 +0000 (07:01 +0200)
Cython/Includes/python.pxd
Cython/Includes/python_version.pxd [new file with mode: 0644]

index 7ef6d473b953cd636b2b70b5bcc365927dcdb7e7..9559db04c85f5f78c118e76a0b6939bfd4c922e0 100644 (file)
 #
 #################################################################
 
+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 (file)
index 0000000..0e83970
--- /dev/null
@@ -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