summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2020-04-21 20:38:06 +0200
committerStefan Behnel <stefan_ml@behnel.de>2020-04-21 20:38:06 +0200
commit616d8088221ebe23084628b4749245bc3f93785a (patch)
tree7b868324b99fe67c135e06725254e0fac84eeca8
parentc2327bfd89492ce2434cab161ed4c2df83b47b48 (diff)
downloadcython-616d8088221ebe23084628b4749245bc3f93785a.tar.gz
Give PEP-487 support a feature flag since it doesn't seem to work in PyPy2 (7.1.1, as available on travis).
-rw-r--r--Cython/Utility/ModuleSetupCode.c11
-rw-r--r--Cython/Utility/ObjectHandling.c6
2 files changed, 14 insertions, 3 deletions
diff --git a/Cython/Utility/ModuleSetupCode.c b/Cython/Utility/ModuleSetupCode.c
index f259c2e25..c057402e5 100644
--- a/Cython/Utility/ModuleSetupCode.c
+++ b/Cython/Utility/ModuleSetupCode.c
@@ -91,6 +91,9 @@
#define CYTHON_METH_FASTCALL 0
#undef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL 0
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
+ #endif
#undef CYTHON_PEP489_MULTI_PHASE_INIT
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
@@ -139,6 +142,8 @@
#define CYTHON_METH_FASTCALL 0
#undef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL 0
+ #undef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS 0
#undef CYTHON_PEP489_MULTI_PHASE_INIT
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
@@ -181,6 +186,9 @@
#define CYTHON_METH_FASTCALL 0
#undef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL 0
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS 1
+ #endif
#undef CYTHON_PEP489_MULTI_PHASE_INIT
#define CYTHON_PEP489_MULTI_PHASE_INIT 0
#undef CYTHON_USE_TP_FINALIZE
@@ -247,6 +255,9 @@
#ifndef CYTHON_FAST_PYCALL
#define CYTHON_FAST_PYCALL 1
#endif
+ #ifndef CYTHON_PEP487_INIT_SUBCLASS
+ #define CYTHON_PEP487_INIT_SUBCLASS 1
+ #endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
#define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
#endif
diff --git a/Cython/Utility/ObjectHandling.c b/Cython/Utility/ObjectHandling.c
index 5140030db..359b37c73 100644
--- a/Cython/Utility/ObjectHandling.c
+++ b/Cython/Utility/ObjectHandling.c
@@ -1068,7 +1068,7 @@ bad:
return NULL;
}
-#if PY_VERSION_HEX < 0x030600A4
+#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS
// https://www.python.org/dev/peps/pep-0487/
static int __Pyx_SetNamesPEP487(PyObject *type_obj) {
PyTypeObject *type = (PyTypeObject*) type_obj;
@@ -1212,7 +1212,7 @@ done:
#endif
}
-// PY_VERSION_HEX < 0x030600A4
+// PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS
#endif
static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
@@ -1249,7 +1249,7 @@ static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObj
Py_DECREF(margs);
}
Py_XDECREF(owned_metaclass);
-#if PY_VERSION_HEX < 0x030600A4
+#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS
if (likely(result) && likely(PyType_Check(result))) {
if (unlikely(__Pyx_SetNamesPEP487(result) < 0)) {
Py_CLEAR(result);