summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Bradshaw <robertwb@gmail.com>2015-03-09 21:49:25 -0700
committerRobert Bradshaw <robertwb@gmail.com>2015-03-09 21:49:25 -0700
commitdeca2abdfcaf3de9b5db2bff018bcfe52cf0f445 (patch)
tree2f34748cdd424831546cdcb75d62985b802f190b
parent6bd3f7b9e494d1259082aecfc0366da15fc105ec (diff)
parent8103da5bfc3e8ee253883208452124990f81fc17 (diff)
downloadcython-deca2abdfcaf3de9b5db2bff018bcfe52cf0f445.tar.gz
Merge pull request #372 from cython/fix-pypy3
PyPy3 Fixes
-rw-r--r--Cython/Compiler/TypeSlots.py12
-rw-r--r--Cython/Utility/ModuleSetupCode.c9
2 files changed, 13 insertions, 8 deletions
diff --git a/Cython/Compiler/TypeSlots.py b/Cython/Compiler/TypeSlots.py
index 6efaf5daa..71b3ad23c 100644
--- a/Cython/Compiler/TypeSlots.py
+++ b/Cython/Compiler/TypeSlots.py
@@ -664,11 +664,13 @@ property_accessor_signatures = {
#
#------------------------------------------------------------------------------------------
+PyNumberMethods_Py3_GUARD = "PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY"
+
PyNumberMethods = (
MethodSlot(binaryfunc, "nb_add", "__add__"),
MethodSlot(binaryfunc, "nb_subtract", "__sub__"),
MethodSlot(binaryfunc, "nb_multiply", "__mul__"),
- MethodSlot(binaryfunc, "nb_divide", "__div__", py3 = False),
+ MethodSlot(binaryfunc, "nb_divide", "__div__", ifdef = PyNumberMethods_Py3_GUARD),
MethodSlot(binaryfunc, "nb_remainder", "__mod__"),
MethodSlot(binaryfunc, "nb_divmod", "__divmod__"),
MethodSlot(ternaryfunc, "nb_power", "__pow__"),
@@ -682,18 +684,18 @@ PyNumberMethods = (
MethodSlot(binaryfunc, "nb_and", "__and__"),
MethodSlot(binaryfunc, "nb_xor", "__xor__"),
MethodSlot(binaryfunc, "nb_or", "__or__"),
- EmptySlot("nb_coerce", py3 = False),
+ EmptySlot("nb_coerce", ifdef = PyNumberMethods_Py3_GUARD),
MethodSlot(unaryfunc, "nb_int", "__int__", fallback="__long__"),
MethodSlot(unaryfunc, "nb_long", "__long__", fallback="__int__", py3 = "<RESERVED>"),
MethodSlot(unaryfunc, "nb_float", "__float__"),
- MethodSlot(unaryfunc, "nb_oct", "__oct__", py3 = False),
- MethodSlot(unaryfunc, "nb_hex", "__hex__", py3 = False),
+ MethodSlot(unaryfunc, "nb_oct", "__oct__", ifdef = PyNumberMethods_Py3_GUARD),
+ MethodSlot(unaryfunc, "nb_hex", "__hex__", ifdef = PyNumberMethods_Py3_GUARD),
# Added in release 2.0
MethodSlot(ibinaryfunc, "nb_inplace_add", "__iadd__"),
MethodSlot(ibinaryfunc, "nb_inplace_subtract", "__isub__"),
MethodSlot(ibinaryfunc, "nb_inplace_multiply", "__imul__"),
- MethodSlot(ibinaryfunc, "nb_inplace_divide", "__idiv__", py3 = False),
+ MethodSlot(ibinaryfunc, "nb_inplace_divide", "__idiv__", ifdef = PyNumberMethods_Py3_GUARD),
MethodSlot(ibinaryfunc, "nb_inplace_remainder", "__imod__"),
MethodSlot(ibinaryfunc, "nb_inplace_power", "__ipow__"), # actually ternaryfunc!!!
MethodSlot(ibinaryfunc, "nb_inplace_lshift", "__ilshift__"),
diff --git a/Cython/Utility/ModuleSetupCode.c b/Cython/Utility/ModuleSetupCode.c
index 6477fb2e3..3ae8a0c71 100644
--- a/Cython/Utility/ModuleSetupCode.c
+++ b/Cython/Utility/ModuleSetupCode.c
@@ -59,13 +59,16 @@
#define __Pyx_DefaultClassType PyType_Type
#endif
-#if PY_MAJOR_VERSION >= 3
+#if !defined(Py_TPFLAGS_CHECKTYPES)
#define Py_TPFLAGS_CHECKTYPES 0
+#endif
+#if !defined(Py_TPFLAGS_HAVE_INDEX)
#define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if !defined(Py_TPFLAGS_HAVE_NEWBUFFER)
#define Py_TPFLAGS_HAVE_NEWBUFFER 0
#endif
-
-#if PY_VERSION_HEX < 0x030400a1 && !defined(Py_TPFLAGS_HAVE_FINALIZE)
+#if !defined(Py_TPFLAGS_HAVE_FINALIZE)
#define Py_TPFLAGS_HAVE_FINALIZE 0
#endif