Salome HOME
Ensure cmake_build_type is used in SALOME 9.12.0
[tools/sat_salome.git] / products / patches / paraview-5.11.0.p007-mpi4py-FD37.patch
1 --- ParaView-5.11.0-ref/VTK/ThirdParty/mpi4py/vtkmpi4py/src/mpi4py.MPI.c        2022-11-18 15:26:55.000000000 +0100
2 +++ ParaView-5.11.0-dev/VTK/ThirdParty/mpi4py/vtkmpi4py/src/mpi4py.MPI.c        2022-12-01 14:27:19.715849691 +0100
3 @@ -1,14 +1,16 @@
4 -/* Generated by Cython 0.29.21 */
5 +/* Generated by Cython 0.29.32 */
6  
7 +#ifndef PY_SSIZE_T_CLEAN
8  #define PY_SSIZE_T_CLEAN
9 +#endif /* PY_SSIZE_T_CLEAN */
10  #include "Python.h"
11  #ifndef Py_PYTHON_H
12      #error Python headers needed to compile C extensions, please install development version of Python.
13  #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
14      #error Cython requires Python 2.6+ or Python 3.3+.
15  #else
16 -#define CYTHON_ABI "0_29_21"
17 -#define CYTHON_HEX_VERSION 0x001D15F0
18 +#define CYTHON_ABI "0_29_32"
19 +#define CYTHON_HEX_VERSION 0x001D20F0
20  #define CYTHON_FUTURE_DIVISION 0
21  #include <stddef.h>
22  #ifndef offsetof
23 @@ -47,6 +49,7 @@
24    #define CYTHON_COMPILING_IN_PYPY 1
25    #define CYTHON_COMPILING_IN_PYSTON 0
26    #define CYTHON_COMPILING_IN_CPYTHON 0
27 +  #define CYTHON_COMPILING_IN_NOGIL 0
28    #undef CYTHON_USE_TYPE_SLOTS
29    #define CYTHON_USE_TYPE_SLOTS 0
30    #undef CYTHON_USE_PYTYPE_LOOKUP
31 @@ -83,10 +86,14 @@
32    #define CYTHON_USE_DICT_VERSIONS 0
33    #undef CYTHON_USE_EXC_INFO_STACK
34    #define CYTHON_USE_EXC_INFO_STACK 0
35 +  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
36 +    #define CYTHON_UPDATE_DESCRIPTOR_DOC (PYPY_VERSION_HEX >= 0x07030900)
37 +  #endif
38  #elif defined(PYSTON_VERSION)
39    #define CYTHON_COMPILING_IN_PYPY 0
40    #define CYTHON_COMPILING_IN_PYSTON 1
41    #define CYTHON_COMPILING_IN_CPYTHON 0
42 +  #define CYTHON_COMPILING_IN_NOGIL 0
43    #ifndef CYTHON_USE_TYPE_SLOTS
44      #define CYTHON_USE_TYPE_SLOTS 1
45    #endif
46 @@ -124,10 +131,59 @@
47    #define CYTHON_USE_DICT_VERSIONS 0
48    #undef CYTHON_USE_EXC_INFO_STACK
49    #define CYTHON_USE_EXC_INFO_STACK 0
50 +  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
51 +    #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
52 +  #endif
53 +#elif defined(PY_NOGIL)
54 +  #define CYTHON_COMPILING_IN_PYPY 0
55 +  #define CYTHON_COMPILING_IN_PYSTON 0
56 +  #define CYTHON_COMPILING_IN_CPYTHON 0
57 +  #define CYTHON_COMPILING_IN_NOGIL 1
58 +  #ifndef CYTHON_USE_TYPE_SLOTS
59 +    #define CYTHON_USE_TYPE_SLOTS 1
60 +  #endif
61 +  #undef CYTHON_USE_PYTYPE_LOOKUP
62 +  #define CYTHON_USE_PYTYPE_LOOKUP 0
63 +  #ifndef CYTHON_USE_ASYNC_SLOTS
64 +    #define CYTHON_USE_ASYNC_SLOTS 1
65 +  #endif
66 +  #undef CYTHON_USE_PYLIST_INTERNALS
67 +  #define CYTHON_USE_PYLIST_INTERNALS 0
68 +  #ifndef CYTHON_USE_UNICODE_INTERNALS
69 +    #define CYTHON_USE_UNICODE_INTERNALS 1
70 +  #endif
71 +  #undef CYTHON_USE_UNICODE_WRITER
72 +  #define CYTHON_USE_UNICODE_WRITER 0
73 +  #undef CYTHON_USE_PYLONG_INTERNALS
74 +  #define CYTHON_USE_PYLONG_INTERNALS 0
75 +  #ifndef CYTHON_AVOID_BORROWED_REFS
76 +    #define CYTHON_AVOID_BORROWED_REFS 0
77 +  #endif
78 +  #ifndef CYTHON_ASSUME_SAFE_MACROS
79 +    #define CYTHON_ASSUME_SAFE_MACROS 1
80 +  #endif
81 +  #ifndef CYTHON_UNPACK_METHODS
82 +    #define CYTHON_UNPACK_METHODS 1
83 +  #endif
84 +  #undef CYTHON_FAST_THREAD_STATE
85 +  #define CYTHON_FAST_THREAD_STATE 0
86 +  #undef CYTHON_FAST_PYCALL
87 +  #define CYTHON_FAST_PYCALL 0
88 +  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
89 +    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
90 +  #endif
91 +  #ifndef CYTHON_USE_TP_FINALIZE
92 +    #define CYTHON_USE_TP_FINALIZE 1
93 +  #endif
94 +  #undef CYTHON_USE_DICT_VERSIONS
95 +  #define CYTHON_USE_DICT_VERSIONS 0
96 +  #undef CYTHON_USE_EXC_INFO_STACK
97 +  #define CYTHON_USE_EXC_INFO_STACK 0
98  #else
99    #define CYTHON_COMPILING_IN_PYPY 0
100    #define CYTHON_COMPILING_IN_PYSTON 0
101    #define CYTHON_COMPILING_IN_CPYTHON 1
102 +  #define CYTHON_COMPILING_IN_NOGIL 0
103    #ifndef CYTHON_USE_TYPE_SLOTS
104      #define CYTHON_USE_TYPE_SLOTS 1
105    #endif
106 @@ -155,7 +211,7 @@
107    #ifndef CYTHON_USE_UNICODE_INTERNALS
108      #define CYTHON_USE_UNICODE_INTERNALS 1
109    #endif
110 -  #if PY_VERSION_HEX < 0x030300F0
111 +  #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2
112      #undef CYTHON_USE_UNICODE_WRITER
113      #define CYTHON_USE_UNICODE_WRITER 0
114    #elif !defined(CYTHON_USE_UNICODE_WRITER)
115 @@ -170,11 +226,14 @@
116    #ifndef CYTHON_UNPACK_METHODS
117      #define CYTHON_UNPACK_METHODS 1
118    #endif
119 -  #ifndef CYTHON_FAST_THREAD_STATE
120 +  #if PY_VERSION_HEX >= 0x030B00A4
121 +    #undef CYTHON_FAST_THREAD_STATE
122 +    #define CYTHON_FAST_THREAD_STATE 0
123 +  #elif !defined(CYTHON_FAST_THREAD_STATE)
124      #define CYTHON_FAST_THREAD_STATE 1
125    #endif
126    #ifndef CYTHON_FAST_PYCALL
127 -    #define CYTHON_FAST_PYCALL 1
128 +    #define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030A0000)
129    #endif
130    #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
131      #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
132 @@ -185,15 +244,23 @@
133    #ifndef CYTHON_USE_DICT_VERSIONS
134      #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
135    #endif
136 -  #ifndef CYTHON_USE_EXC_INFO_STACK
137 +  #if PY_VERSION_HEX >= 0x030B00A4
138 +    #undef CYTHON_USE_EXC_INFO_STACK
139 +    #define CYTHON_USE_EXC_INFO_STACK 0
140 +  #elif !defined(CYTHON_USE_EXC_INFO_STACK)
141      #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
142    #endif
143 +  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
144 +    #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
145 +  #endif
146  #endif
147  #if !defined(CYTHON_FAST_PYCCALL)
148  #define CYTHON_FAST_PYCCALL  (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
149  #endif
150  #if CYTHON_USE_PYLONG_INTERNALS
151 -  #include "longintrepr.h"
152 +  #if PY_MAJOR_VERSION < 3
153 +    #include "longintrepr.h"
154 +  #endif
155    #undef SHIFT
156    #undef BASE
157    #undef MASK
158 @@ -310,9 +377,68 @@
159    #define __Pyx_DefaultClassType PyClass_Type
160  #else
161    #define __Pyx_BUILTIN_MODULE_NAME "builtins"
162 -#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
163 -  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
164 -          PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
165 +  #define __Pyx_DefaultClassType PyType_Type
166 +#if PY_VERSION_HEX >= 0x030B00A1
167 +    static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f,
168 +                                                    PyObject *code, PyObject *c, PyObject* n, PyObject *v,
169 +                                                    PyObject *fv, PyObject *cell, PyObject* fn,
170 +                                                    PyObject *name, int fline, PyObject *lnos) {
171 +        PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL;
172 +        PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL;
173 +        const char *fn_cstr=NULL;
174 +        const char *name_cstr=NULL;
175 +        PyCodeObject* co=NULL;
176 +        PyObject *type, *value, *traceback;
177 +        PyErr_Fetch(&type, &value, &traceback);
178 +        if (!(kwds=PyDict_New())) goto end;
179 +        if (!(argcount=PyLong_FromLong(a))) goto end;
180 +        if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end;
181 +        if (!(posonlyargcount=PyLong_FromLong(0))) goto end;
182 +        if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end;
183 +        if (!(kwonlyargcount=PyLong_FromLong(k))) goto end;
184 +        if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end;
185 +        if (!(nlocals=PyLong_FromLong(l))) goto end;
186 +        if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end;
187 +        if (!(stacksize=PyLong_FromLong(s))) goto end;
188 +        if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end;
189 +        if (!(flags=PyLong_FromLong(f))) goto end;
190 +        if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end;
191 +        if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end;
192 +        if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end;
193 +        if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end;
194 +        if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end;
195 +        if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end;
196 +        if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end;
197 +        if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end;
198 +        if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end;
199 +        if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end;
200 +        if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end;
201 +        if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too;
202 +        if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here
203 +        if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too;
204 +        Py_XDECREF((PyObject*)co);
205 +        co = (PyCodeObject*)call_result;
206 +        call_result = NULL;
207 +        if (0) {
208 +            cleanup_code_too:
209 +            Py_XDECREF((PyObject*)co);
210 +            co = NULL;
211 +        }
212 +        end:
213 +        Py_XDECREF(kwds);
214 +        Py_XDECREF(argcount);
215 +        Py_XDECREF(posonlyargcount);
216 +        Py_XDECREF(kwonlyargcount);
217 +        Py_XDECREF(nlocals);
218 +        Py_XDECREF(stacksize);
219 +        Py_XDECREF(replace);
220 +        Py_XDECREF(call_result);
221 +        Py_XDECREF(empty);
222 +        if (type) {
223 +            PyErr_Restore(type, value, traceback);
224 +        }
225 +        return co;
226 +    }
227  #else
228    #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
229            PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
230 @@ -426,8 +552,12 @@
231  #endif
232  #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
233    #define CYTHON_PEP393_ENABLED 1
234 +  #if defined(PyUnicode_IS_READY)
235    #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
236                                                0 : _PyUnicode_Ready((PyObject *)(op)))
237 +  #else
238 +  #define __Pyx_PyUnicode_READY(op)       (0)
239 +  #endif
240    #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
241    #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
242    #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   PyUnicode_MAX_CHAR_VALUE(u)
243 @@ -436,7 +566,11 @@
244    #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
245    #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  PyUnicode_WRITE(k, d, i, ch)
246    #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
247 +  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
248 +  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
249 +  #else
250    #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
251 +  #endif
252    #else
253    #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_LENGTH(u))
254    #endif
255 @@ -542,10 +676,10 @@
256  #if PY_VERSION_HEX < 0x030200A4
257    typedef long Py_hash_t;
258    #define __Pyx_PyInt_FromHash_t PyInt_FromLong
259 -  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
260 +  #define __Pyx_PyInt_AsHash_t   __Pyx_PyIndex_AsHash_t
261  #else
262    #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
263 -  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
264 +  #define __Pyx_PyInt_AsHash_t   __Pyx_PyIndex_AsSsize_t
265  #endif
266  #if PY_MAJOR_VERSION >= 3
267    #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
268 @@ -570,8 +704,10 @@
269      } __Pyx_PyAsyncMethodsStruct;
270  #endif
271  
272 -#if defined(WIN32) || defined(MS_WINDOWS)
273 -  #define _USE_MATH_DEFINES
274 +#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)
275 +  #if !defined(_USE_MATH_DEFINES)
276 +    #define _USE_MATH_DEFINES
277 +  #endif
278  #endif
279  #include <math.h>
280  #ifdef NAN
281 @@ -703,6 +839,7 @@
282      (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
283  static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
284  static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
285 +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
286  #if CYTHON_ASSUME_SAFE_MACROS
287  #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
288  #else
289 @@ -1747,13 +1884,21 @@
290  #ifndef Py_MEMBER_SIZE
291  #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
292  #endif
293 +#if CYTHON_FAST_PYCALL
294    static size_t __pyx_pyframe_localsplus_offset = 0;
295    #include "frameobject.h"
296 +#if PY_VERSION_HEX >= 0x030b00a6
297 +  #ifndef Py_BUILD_CORE
298 +    #define Py_BUILD_CORE 1
299 +  #endif
300 +  #include "internal/pycore_frame.h"
301 +#endif
302    #define __Pxy_PyFrame_Initialize_Offsets()\
303      ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
304       (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
305    #define __Pyx_PyFrame_GetLocalsplus(frame)\
306      (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
307 +#endif // CYTHON_FAST_PYCALL
308  #endif
309  
310  /* PyObjectCall.proto */
311 @@ -2340,26 +2485,19 @@
312  static void __Pyx_AddTraceback(const char *funcname, int c_line,
313                                 int py_line, const char *filename);
314  
315 -/* CIntToPy.proto */
316 -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Aint(MPI_Aint value);
317 -
318 -/* CIntToPy.proto */
319 -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
320 -
321 -/* CIntToPy.proto */
322 -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
323 +/* GCCDiagnostics.proto */
324 +#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
325 +#define __Pyx_HAS_GCC_DIAGNOSTIC
326 +#endif
327  
328 -/* CIntToPy.proto */
329 -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Offset(MPI_Offset value);
330 +/* CIntFromPy.proto */
331 +static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
332  
333  /* CIntToPy.proto */
334 -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Fint(MPI_Fint value);
335 +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Aint(MPI_Aint value);
336  
337  /* CIntToPy.proto */
338 -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Count(MPI_Count value);
339 -
340 -/* CIntFromPy.proto */
341 -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
342 +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
343  
344  /* CIntFromPy.proto */
345  static CYTHON_INLINE MPI_Aint __Pyx_PyInt_As_MPI_Aint(PyObject *);
346 @@ -2370,12 +2508,24 @@
347  /* CIntFromPy.proto */
348  static CYTHON_INLINE MPI_Offset __Pyx_PyInt_As_MPI_Offset(PyObject *);
349  
350 +/* CIntToPy.proto */
351 +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
352 +
353  /* CIntFromPy.proto */
354  static CYTHON_INLINE unsigned char __Pyx_PyInt_As_unsigned_char(PyObject *);
355  
356 +/* CIntToPy.proto */
357 +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Offset(MPI_Offset value);
358 +
359 +/* CIntToPy.proto */
360 +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Fint(MPI_Fint value);
361 +
362  /* CIntFromPy.proto */
363  static CYTHON_INLINE MPI_Fint __Pyx_PyInt_As_MPI_Fint(PyObject *);
364  
365 +/* CIntToPy.proto */
366 +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Count(MPI_Count value);
367 +
368  /* CIntFromPy.proto */
369  static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
370  
371 @@ -16973,7 +17123,8 @@
372    PyObject *__pyx_t_2 = NULL;
373    int __pyx_t_3;
374    int __pyx_t_4;
375 -  MPI_Status __pyx_t_5;
376 +  PyObject *__pyx_t_5 = NULL;
377 +  MPI_Status __pyx_t_6;
378    int __pyx_lineno = 0;
379    const char *__pyx_filename = NULL;
380    int __pyx_clineno = 0;
381 @@ -17073,10 +17224,13 @@
382        PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
383        __PYX_ERR(13, 79, __pyx_L1_error)
384      }
385 -    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_self->query_fn, __pyx_t_1, __pyx_v_self->kargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 79, __pyx_L1_error)
386 +    __pyx_t_2 = PyDict_Copy(__pyx_v_self->kargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 79, __pyx_L1_error)
387      __Pyx_GOTREF(__pyx_t_2);
388 +    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_self->query_fn, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 79, __pyx_L1_error)
389 +    __Pyx_GOTREF(__pyx_t_5);
390      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
391      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
392 +    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
393  
394      /* "mpi4py/MPI/reqimpl.pxi":80
395   *             sts.ob_mpi = status[0]
396 @@ -17085,8 +17239,8 @@
397   *             if self.cancel_fn is None:
398   *                 <void>MPI_Status_set_cancelled(status, 0)
399   */
400 -    __pyx_t_5 = __pyx_v_sts->ob_mpi;
401 -    (__pyx_v_status[0]) = __pyx_t_5;
402 +    __pyx_t_6 = __pyx_v_sts->ob_mpi;
403 +    (__pyx_v_status[0]) = __pyx_t_6;
404  
405      /* "mpi4py/MPI/reqimpl.pxi":81
406   *             self.query_fn(sts, *self.args, **self.kargs)
407 @@ -17148,6 +17302,7 @@
408    __pyx_L1_error:;
409    __Pyx_XDECREF(__pyx_t_1);
410    __Pyx_XDECREF(__pyx_t_2);
411 +  __Pyx_XDECREF(__pyx_t_5);
412    __Pyx_AddTraceback("mpi4py.MPI._p_greq.query", __pyx_clineno, __pyx_lineno, __pyx_filename);
413    __pyx_r = -1;
414    __pyx_L0:;
415 @@ -17170,6 +17325,7 @@
416    int __pyx_t_1;
417    int __pyx_t_2;
418    PyObject *__pyx_t_3 = NULL;
419 +  PyObject *__pyx_t_4 = NULL;
420    int __pyx_lineno = 0;
421    const char *__pyx_filename = NULL;
422    int __pyx_clineno = 0;
423 @@ -17201,9 +17357,12 @@
424        PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
425        __PYX_ERR(13, 87, __pyx_L1_error)
426      }
427 -    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_self->free_fn, __pyx_v_self->args, __pyx_v_self->kargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 87, __pyx_L1_error)
428 +    __pyx_t_3 = PyDict_Copy(__pyx_v_self->kargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 87, __pyx_L1_error)
429      __Pyx_GOTREF(__pyx_t_3);
430 +    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_self->free_fn, __pyx_v_self->args, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 87, __pyx_L1_error)
431 +    __Pyx_GOTREF(__pyx_t_4);
432      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
433 +    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
434  
435      /* "mpi4py/MPI/reqimpl.pxi":86
436   * 
437 @@ -17235,6 +17394,7 @@
438    /* function exit code */
439    __pyx_L1_error:;
440    __Pyx_XDECREF(__pyx_t_3);
441 +  __Pyx_XDECREF(__pyx_t_4);
442    __Pyx_AddTraceback("mpi4py.MPI._p_greq.free", __pyx_clineno, __pyx_lineno, __pyx_filename);
443    __pyx_r = -1;
444    __pyx_L0:;
445 @@ -17257,6 +17417,7 @@
446    int __pyx_t_2;
447    PyObject *__pyx_t_3 = NULL;
448    PyObject *__pyx_t_4 = NULL;
449 +  PyObject *__pyx_t_5 = NULL;
450    int __pyx_lineno = 0;
451    const char *__pyx_filename = NULL;
452    int __pyx_clineno = 0;
453 @@ -17298,10 +17459,13 @@
454        PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
455        __PYX_ERR(13, 92, __pyx_L1_error)
456      }
457 -    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_self->cancel_fn, __pyx_t_3, __pyx_v_self->kargs); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 92, __pyx_L1_error)
458 +    __pyx_t_4 = PyDict_Copy(__pyx_v_self->kargs); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 92, __pyx_L1_error)
459      __Pyx_GOTREF(__pyx_t_4);
460 +    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_self->cancel_fn, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 92, __pyx_L1_error)
461 +    __Pyx_GOTREF(__pyx_t_5);
462      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
463      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
464 +    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
465  
466      /* "mpi4py/MPI/reqimpl.pxi":91
467   * 
468 @@ -17334,6 +17498,7 @@
469    __pyx_L1_error:;
470    __Pyx_XDECREF(__pyx_t_3);
471    __Pyx_XDECREF(__pyx_t_4);
472 +  __Pyx_XDECREF(__pyx_t_5);
473    __Pyx_AddTraceback("mpi4py.MPI._p_greq.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
474    __pyx_r = -1;
475    __pyx_L0:;
476 @@ -157790,12 +157955,15 @@
477    #if PY_VERSION_HEX >= 0x030400a1
478    0, /*tp_finalize*/
479    #endif
480 -  #if PY_VERSION_HEX >= 0x030800b1
481 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
482    0, /*tp_vectorcall*/
483    #endif
484    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
485    0, /*tp_print*/
486    #endif
487 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
488 +  0, /*tp_pypy_flags*/
489 +  #endif
490  };
491  
492  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Datatype(PyTypeObject *t, PyObject *a, PyObject *k) {
493 @@ -158075,12 +158243,15 @@
494    #if PY_VERSION_HEX >= 0x030400a1
495    0, /*tp_finalize*/
496    #endif
497 -  #if PY_VERSION_HEX >= 0x030800b1
498 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
499    0, /*tp_vectorcall*/
500    #endif
501    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
502    0, /*tp_print*/
503    #endif
504 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
505 +  0, /*tp_pypy_flags*/
506 +  #endif
507  };
508  
509  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Request(PyTypeObject *t, PyObject *a, PyObject *k) {
510 @@ -158285,12 +158456,15 @@
511    #if PY_VERSION_HEX >= 0x030400a1
512    0, /*tp_finalize*/
513    #endif
514 -  #if PY_VERSION_HEX >= 0x030800b1
515 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
516    0, /*tp_vectorcall*/
517    #endif
518    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
519    0, /*tp_print*/
520    #endif
521 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
522 +  0, /*tp_pypy_flags*/
523 +  #endif
524  };
525  
526  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Prequest(PyTypeObject *t, PyObject *a, PyObject *k) {
527 @@ -158370,12 +158544,15 @@
528    #if PY_VERSION_HEX >= 0x030400a1
529    0, /*tp_finalize*/
530    #endif
531 -  #if PY_VERSION_HEX >= 0x030800b1
532 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
533    0, /*tp_vectorcall*/
534    #endif
535    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
536    0, /*tp_print*/
537    #endif
538 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
539 +  0, /*tp_pypy_flags*/
540 +  #endif
541  };
542  
543  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Grequest(PyTypeObject *t, PyObject *a, PyObject *k) {
544 @@ -158455,12 +158632,15 @@
545    #if PY_VERSION_HEX >= 0x030400a1
546    0, /*tp_finalize*/
547    #endif
548 -  #if PY_VERSION_HEX >= 0x030800b1
549 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
550    0, /*tp_vectorcall*/
551    #endif
552    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
553    0, /*tp_print*/
554    #endif
555 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
556 +  0, /*tp_pypy_flags*/
557 +  #endif
558  };
559  
560  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Message(PyTypeObject *t, PyObject *a, PyObject *k) {
561 @@ -158656,12 +158836,15 @@
562    #if PY_VERSION_HEX >= 0x030400a1
563    0, /*tp_finalize*/
564    #endif
565 -  #if PY_VERSION_HEX >= 0x030800b1
566 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
567    0, /*tp_vectorcall*/
568    #endif
569    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
570    0, /*tp_print*/
571    #endif
572 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
573 +  0, /*tp_pypy_flags*/
574 +  #endif
575  };
576  
577  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Op(PyTypeObject *t, PyObject *a, PyObject *k) {
578 @@ -158843,12 +159026,15 @@
579    #if PY_VERSION_HEX >= 0x030400a1
580    0, /*tp_finalize*/
581    #endif
582 -  #if PY_VERSION_HEX >= 0x030800b1
583 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
584    0, /*tp_vectorcall*/
585    #endif
586    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
587    0, /*tp_print*/
588    #endif
589 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
590 +  0, /*tp_pypy_flags*/
591 +  #endif
592  };
593  
594  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Group(PyTypeObject *t, PyObject *a, PyObject *k) {
595 @@ -159039,12 +159225,15 @@
596    #if PY_VERSION_HEX >= 0x030400a1
597    0, /*tp_finalize*/
598    #endif
599 -  #if PY_VERSION_HEX >= 0x030800b1
600 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
601    0, /*tp_vectorcall*/
602    #endif
603    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
604    0, /*tp_print*/
605    #endif
606 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
607 +  0, /*tp_pypy_flags*/
608 +  #endif
609  };
610  
611  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Info(PyTypeObject *t, PyObject *a, PyObject *k) {
612 @@ -159258,12 +159447,15 @@
613    #if PY_VERSION_HEX >= 0x030400a1
614    0, /*tp_finalize*/
615    #endif
616 -  #if PY_VERSION_HEX >= 0x030800b1
617 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
618    0, /*tp_vectorcall*/
619    #endif
620    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
621    0, /*tp_print*/
622    #endif
623 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
624 +  0, /*tp_pypy_flags*/
625 +  #endif
626  };
627  
628  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Errhandler(PyTypeObject *t, PyObject *a, PyObject *k) {
629 @@ -159428,12 +159620,15 @@
630    #if PY_VERSION_HEX >= 0x030400a1
631    0, /*tp_finalize*/
632    #endif
633 -  #if PY_VERSION_HEX >= 0x030800b1
634 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
635    0, /*tp_vectorcall*/
636    #endif
637    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
638    0, /*tp_print*/
639    #endif
640 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
641 +  0, /*tp_pypy_flags*/
642 +  #endif
643  };
644  
645  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Comm(PyTypeObject *t, PyObject *a, PyObject *k) {
646 @@ -159770,12 +159965,15 @@
647    #if PY_VERSION_HEX >= 0x030400a1
648    0, /*tp_finalize*/
649    #endif
650 -  #if PY_VERSION_HEX >= 0x030800b1
651 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
652    0, /*tp_vectorcall*/
653    #endif
654    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
655    0, /*tp_print*/
656    #endif
657 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
658 +  0, /*tp_pypy_flags*/
659 +  #endif
660  };
661  
662  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Intracomm(PyTypeObject *t, PyObject *a, PyObject *k) {
663 @@ -159870,12 +160068,15 @@
664    #if PY_VERSION_HEX >= 0x030400a1
665    0, /*tp_finalize*/
666    #endif
667 -  #if PY_VERSION_HEX >= 0x030800b1
668 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
669    0, /*tp_vectorcall*/
670    #endif
671    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
672    0, /*tp_print*/
673    #endif
674 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
675 +  0, /*tp_pypy_flags*/
676 +  #endif
677  };
678  
679  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Topocomm(PyTypeObject *t, PyObject *a, PyObject *k) {
680 @@ -159999,12 +160200,15 @@
681    #if PY_VERSION_HEX >= 0x030400a1
682    0, /*tp_finalize*/
683    #endif
684 -  #if PY_VERSION_HEX >= 0x030800b1
685 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
686    0, /*tp_vectorcall*/
687    #endif
688    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
689    0, /*tp_print*/
690    #endif
691 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
692 +  0, /*tp_pypy_flags*/
693 +  #endif
694  };
695  
696  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Cartcomm(PyTypeObject *t, PyObject *a, PyObject *k) {
697 @@ -160122,12 +160326,15 @@
698    #if PY_VERSION_HEX >= 0x030400a1
699    0, /*tp_finalize*/
700    #endif
701 -  #if PY_VERSION_HEX >= 0x030800b1
702 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
703    0, /*tp_vectorcall*/
704    #endif
705    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
706    0, /*tp_print*/
707    #endif
708 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
709 +  0, /*tp_pypy_flags*/
710 +  #endif
711  };
712  
713  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Graphcomm(PyTypeObject *t, PyObject *a, PyObject *k) {
714 @@ -160253,12 +160460,15 @@
715    #if PY_VERSION_HEX >= 0x030400a1
716    0, /*tp_finalize*/
717    #endif
718 -  #if PY_VERSION_HEX >= 0x030800b1
719 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
720    0, /*tp_vectorcall*/
721    #endif
722    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
723    0, /*tp_print*/
724    #endif
725 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
726 +  0, /*tp_pypy_flags*/
727 +  #endif
728  };
729  
730  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Distgraphcomm(PyTypeObject *t, PyObject *a, PyObject *k) {
731 @@ -160338,12 +160548,15 @@
732    #if PY_VERSION_HEX >= 0x030400a1
733    0, /*tp_finalize*/
734    #endif
735 -  #if PY_VERSION_HEX >= 0x030800b1
736 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
737    0, /*tp_vectorcall*/
738    #endif
739    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
740    0, /*tp_print*/
741    #endif
742 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
743 +  0, /*tp_pypy_flags*/
744 +  #endif
745  };
746  
747  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Intercomm(PyTypeObject *t, PyObject *a, PyObject *k) {
748 @@ -160438,12 +160651,15 @@
749    #if PY_VERSION_HEX >= 0x030400a1
750    0, /*tp_finalize*/
751    #endif
752 -  #if PY_VERSION_HEX >= 0x030800b1
753 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
754    0, /*tp_vectorcall*/
755    #endif
756    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
757    0, /*tp_print*/
758    #endif
759 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
760 +  0, /*tp_pypy_flags*/
761 +  #endif
762  };
763  
764  static PyObject *__pyx_tp_new_6mpi4py_3MPI_Win(PyTypeObject *t, PyObject *a, PyObject *k) {
765 @@ -160749,12 +160965,15 @@
766    #if PY_VERSION_HEX >= 0x030400a1
767    0, /*tp_finalize*/
768    #endif
769 -  #if PY_VERSION_HEX >= 0x030800b1
770 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
771    0, /*tp_vectorcall*/
772    #endif
773    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
774    0, /*tp_print*/
775    #endif
776 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
777 +  0, /*tp_pypy_flags*/
778 +  #endif
779  };
780  
781  static PyObject *__pyx_tp_new_6mpi4py_3MPI_File(PyTypeObject *t, PyObject *a, PyObject *k) {
782 @@ -161025,12 +161244,15 @@
783    #if PY_VERSION_HEX >= 0x030400a1
784    0, /*tp_finalize*/
785    #endif
786 -  #if PY_VERSION_HEX >= 0x030800b1
787 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
788    0, /*tp_vectorcall*/
789    #endif
790    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
791    0, /*tp_print*/
792    #endif
793 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
794 +  0, /*tp_pypy_flags*/
795 +  #endif
796  };
797  
798  static PyObject *__pyx_tp_new_6mpi4py_3MPI_memory(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
799 @@ -161201,12 +161423,15 @@
800    #if PY_VERSION_HEX >= 0x030400a1
801    0, /*tp_finalize*/
802    #endif
803 -  #if PY_VERSION_HEX >= 0x030800b1
804 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
805    0, /*tp_vectorcall*/
806    #endif
807    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
808    0, /*tp_print*/
809    #endif
810 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
811 +  0, /*tp_pypy_flags*/
812 +  #endif
813  };
814  
815  static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_mem(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
816 @@ -161297,12 +161522,15 @@
817    #if PY_VERSION_HEX >= 0x030400a1
818    0, /*tp_finalize*/
819    #endif
820 -  #if PY_VERSION_HEX >= 0x030800b1
821 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
822    0, /*tp_vectorcall*/
823    #endif
824    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
825    0, /*tp_print*/
826    #endif
827 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
828 +  0, /*tp_pypy_flags*/
829 +  #endif
830  };
831  static struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq __pyx_vtable_6mpi4py_3MPI__p_greq;
832  
833 @@ -161443,12 +161671,15 @@
834    #if PY_VERSION_HEX >= 0x030400a1
835    0, /*tp_finalize*/
836    #endif
837 -  #if PY_VERSION_HEX >= 0x030800b1
838 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
839    0, /*tp_vectorcall*/
840    #endif
841    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
842    0, /*tp_print*/
843    #endif
844 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
845 +  0, /*tp_pypy_flags*/
846 +  #endif
847  };
848  static struct __pyx_vtabstruct_6mpi4py_3MPI__p_datarep __pyx_vtable_6mpi4py_3MPI__p_datarep;
849  
850 @@ -161573,12 +161804,15 @@
851    #if PY_VERSION_HEX >= 0x030400a1
852    0, /*tp_finalize*/
853    #endif
854 -  #if PY_VERSION_HEX >= 0x030800b1
855 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
856    0, /*tp_vectorcall*/
857    #endif
858    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
859    0, /*tp_print*/
860    #endif
861 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
862 +  0, /*tp_pypy_flags*/
863 +  #endif
864  };
865  
866  static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_keyval(PyTypeObject *t, PyObject *a, PyObject *k) {
867 @@ -161740,12 +161974,15 @@
868    #if PY_VERSION_HEX >= 0x030400a1
869    0, /*tp_finalize*/
870    #endif
871 -  #if PY_VERSION_HEX >= 0x030800b1
872 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
873    0, /*tp_vectorcall*/
874    #endif
875    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
876    0, /*tp_print*/
877    #endif
878 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
879 +  0, /*tp_pypy_flags*/
880 +  #endif
881  };
882  
883  static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_message(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
884 @@ -161868,12 +162105,15 @@
885    #if PY_VERSION_HEX >= 0x030400a1
886    0, /*tp_finalize*/
887    #endif
888 -  #if PY_VERSION_HEX >= 0x030800b1
889 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
890    0, /*tp_vectorcall*/
891    #endif
892    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
893    0, /*tp_print*/
894    #endif
895 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
896 +  0, /*tp_pypy_flags*/
897 +  #endif
898  };
899  static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_p2p __pyx_vtable_6mpi4py_3MPI__p_msg_p2p;
900  
901 @@ -161982,12 +162222,15 @@
902    #if PY_VERSION_HEX >= 0x030400a1
903    0, /*tp_finalize*/
904    #endif
905 -  #if PY_VERSION_HEX >= 0x030800b1
906 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
907    0, /*tp_vectorcall*/
908    #endif
909    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
910    0, /*tp_print*/
911    #endif
912 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
913 +  0, /*tp_pypy_flags*/
914 +  #endif
915  };
916  static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco __pyx_vtable_6mpi4py_3MPI__p_msg_cco;
917  
918 @@ -162112,12 +162355,15 @@
919    #if PY_VERSION_HEX >= 0x030400a1
920    0, /*tp_finalize*/
921    #endif
922 -  #if PY_VERSION_HEX >= 0x030800b1
923 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
924    0, /*tp_vectorcall*/
925    #endif
926    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
927    0, /*tp_print*/
928    #endif
929 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
930 +  0, /*tp_pypy_flags*/
931 +  #endif
932  };
933  static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_ccow __pyx_vtable_6mpi4py_3MPI__p_msg_ccow;
934  
935 @@ -162234,12 +162480,15 @@
936    #if PY_VERSION_HEX >= 0x030400a1
937    0, /*tp_finalize*/
938    #endif
939 -  #if PY_VERSION_HEX >= 0x030800b1
940 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
941    0, /*tp_vectorcall*/
942    #endif
943    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
944    0, /*tp_print*/
945    #endif
946 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
947 +  0, /*tp_pypy_flags*/
948 +  #endif
949  };
950  static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma __pyx_vtable_6mpi4py_3MPI__p_msg_rma;
951  
952 @@ -162372,12 +162621,15 @@
953    #if PY_VERSION_HEX >= 0x030400a1
954    0, /*tp_finalize*/
955    #endif
956 -  #if PY_VERSION_HEX >= 0x030800b1
957 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
958    0, /*tp_vectorcall*/
959    #endif
960    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
961    0, /*tp_print*/
962    #endif
963 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
964 +  0, /*tp_pypy_flags*/
965 +  #endif
966  };
967  static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_io __pyx_vtable_6mpi4py_3MPI__p_msg_io;
968  
969 @@ -162486,12 +162738,15 @@
970    #if PY_VERSION_HEX >= 0x030400a1
971    0, /*tp_finalize*/
972    #endif
973 -  #if PY_VERSION_HEX >= 0x030800b1
974 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
975    0, /*tp_vectorcall*/
976    #endif
977    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
978    0, /*tp_print*/
979    #endif
980 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
981 +  0, /*tp_pypy_flags*/
982 +  #endif
983  };
984  static struct __pyx_vtabstruct_6mpi4py_3MPI_Pickle __pyx_vtable_6mpi4py_3MPI_Pickle;
985  
986 @@ -162637,12 +162892,15 @@
987    #if PY_VERSION_HEX >= 0x030400a1
988    0, /*tp_finalize*/
989    #endif
990 -  #if PY_VERSION_HEX >= 0x030800b1
991 +  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
992    0, /*tp_vectorcall*/
993    #endif
994    #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
995    0, /*tp_print*/
996    #endif
997 +  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
998 +  0, /*tp_pypy_flags*/
999 +  #endif
1000  };
1001  
1002  static PyMethodDef __pyx_methods[] = {
1003 @@ -165349,11 +165607,9 @@
1004    #endif
1005    /*--- Library function declarations ---*/
1006    /*--- Threads initialization code ---*/
1007 -  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
1008 -  #ifdef WITH_THREAD /* Python build with threading support? */
1009 +  #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
1010    PyEval_InitThreads();
1011    #endif
1012 -  #endif
1013    /*--- Module creation code ---*/
1014    #if CYTHON_PEP489_MULTI_PHASE_INIT
1015    __pyx_m = __pyx_pyinit_module;
1016 @@ -177405,7 +177661,7 @@
1017  #if CYTHON_COMPILING_IN_CPYTHON
1018  static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
1019      PyObject *result;
1020 -    ternaryfunc call = func->ob_type->tp_call;
1021 +    ternaryfunc call = Py_TYPE(func)->tp_call;
1022      if (unlikely(!call))
1023          return PyObject_Call(func, arg, kw);
1024      if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
1025 @@ -177492,7 +177748,7 @@
1026          if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
1027              return __Pyx_PyObject_CallMethO(func, arg);
1028  #if CYTHON_FAST_PYCCALL
1029 -        } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) {
1030 +        } else if (__Pyx_PyFastCFunction_Check(func)) {
1031              return __Pyx_PyCFunction_FastCall(func, &arg, 1);
1032  #endif
1033          }
1034 @@ -177684,7 +177940,7 @@
1035              return (equals == Py_EQ);
1036          } else {
1037              int result;
1038 -#if CYTHON_USE_UNICODE_INTERNALS
1039 +#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000)
1040              Py_hash_t hash1, hash2;
1041              hash1 = ((PyBytesObject*)s1)->ob_shash;
1042              hash2 = ((PyBytesObject*)s2)->ob_shash;
1043 @@ -179668,7 +179924,8 @@
1044  __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
1045  {
1046  #if PY_MAJOR_VERSION >= 3
1047 -    return PyUnicode_FromString(m->func.m_ml->ml_name);
1048 +    Py_INCREF(m->func_qualname);
1049 +    return m->func_qualname;
1050  #else
1051      return PyString_FromString(m->func.m_ml->ml_name);
1052  #endif
1053 @@ -179871,6 +180128,9 @@
1054          self = PyTuple_GetItem(args, 0);
1055          if (unlikely(!self)) {
1056              Py_DECREF(new_args);
1057 +            PyErr_Format(PyExc_TypeError,
1058 +                         "unbound method %.200S() needs an argument",
1059 +                         cyfunc->func_qualname);
1060              return NULL;
1061          }
1062          result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);
1063 @@ -179939,12 +180199,15 @@
1064  #if PY_VERSION_HEX >= 0x030400a1
1065      0,
1066  #endif
1067 -#if PY_VERSION_HEX >= 0x030800b1
1068 +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
1069      0,
1070  #endif
1071  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
1072      0,
1073  #endif
1074 +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
1075 +    0,
1076 +#endif
1077  };
1078  static int __pyx_CyFunction_init(void) {
1079      __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
1080 @@ -180194,7 +180457,7 @@
1081      }
1082      if (!use_cline) {
1083          c_line = 0;
1084 -        PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
1085 +        (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
1086      }
1087      else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
1088          c_line = 0;
1089 @@ -180288,33 +180551,40 @@
1090  #include "compile.h"
1091  #include "frameobject.h"
1092  #include "traceback.h"
1093 +#if PY_VERSION_HEX >= 0x030b00a6
1094 +  #ifndef Py_BUILD_CORE
1095 +    #define Py_BUILD_CORE 1
1096 +  #endif
1097 +  #include "internal/pycore_frame.h"
1098 +#endif
1099  static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
1100              const char *funcname, int c_line,
1101              int py_line, const char *filename) {
1102 -    PyCodeObject *py_code = 0;
1103 -    PyObject *py_srcfile = 0;
1104 -    PyObject *py_funcname = 0;
1105 +    PyCodeObject *py_code = NULL;
1106 +    PyObject *py_funcname = NULL;
1107      #if PY_MAJOR_VERSION < 3
1108 +    PyObject *py_srcfile = NULL;
1109      py_srcfile = PyString_FromString(filename);
1110 -    #else
1111 -    py_srcfile = PyUnicode_FromString(filename);
1112 -    #endif
1113      if (!py_srcfile) goto bad;
1114 +    #endif
1115      if (c_line) {
1116          #if PY_MAJOR_VERSION < 3
1117          py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
1118 +        if (!py_funcname) goto bad;
1119          #else
1120          py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
1121 +        if (!py_funcname) goto bad;
1122 +        funcname = PyUnicode_AsUTF8(py_funcname);
1123 +        if (!funcname) goto bad;
1124          #endif
1125      }
1126      else {
1127          #if PY_MAJOR_VERSION < 3
1128          py_funcname = PyString_FromString(funcname);
1129 -        #else
1130 -        py_funcname = PyUnicode_FromString(funcname);
1131 +        if (!py_funcname) goto bad;
1132          #endif
1133      }
1134 -    if (!py_funcname) goto bad;
1135 +    #if PY_MAJOR_VERSION < 3
1136      py_code = __Pyx_PyCode_New(
1137          0,
1138          0,
1139 @@ -180333,11 +180603,16 @@
1140          __pyx_empty_bytes  /*PyObject *lnotab*/
1141      );
1142      Py_DECREF(py_srcfile);
1143 -    Py_DECREF(py_funcname);
1144 +    #else
1145 +    py_code = PyCode_NewEmpty(filename, funcname, py_line);
1146 +    #endif
1147 +    Py_XDECREF(py_funcname);  // XDECREF since it's only set on Py3 if cline
1148      return py_code;
1149  bad:
1150 -    Py_XDECREF(py_srcfile);
1151      Py_XDECREF(py_funcname);
1152 +    #if PY_MAJOR_VERSION < 3
1153 +    Py_XDECREF(py_srcfile);
1154 +    #endif
1155      return NULL;
1156  }
1157  static void __Pyx_AddTraceback(const char *funcname, int c_line,
1158 @@ -180345,14 +180620,24 @@
1159      PyCodeObject *py_code = 0;
1160      PyFrameObject *py_frame = 0;
1161      PyThreadState *tstate = __Pyx_PyThreadState_Current;
1162 +    PyObject *ptype, *pvalue, *ptraceback;
1163      if (c_line) {
1164          c_line = __Pyx_CLineForTraceback(tstate, c_line);
1165      }
1166      py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
1167      if (!py_code) {
1168 +        __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
1169          py_code = __Pyx_CreateCodeObjectForTraceback(
1170              funcname, c_line, py_line, filename);
1171 -        if (!py_code) goto bad;
1172 +        if (!py_code) {
1173 +            /* If the code object creation fails, then we should clear the
1174 +               fetched exception references and propagate the new exception */
1175 +            Py_XDECREF(ptype);
1176 +            Py_XDECREF(pvalue);
1177 +            Py_XDECREF(ptraceback);
1178 +            goto bad;
1179 +        }
1180 +        __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
1181          __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
1182      }
1183      py_frame = PyFrame_New(
1184 @@ -180391,195 +180676,16 @@
1185          return (target_type) value;\
1186      }
1187  
1188 -/* CIntToPy */
1189 -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Aint(MPI_Aint value) {
1190 -    const MPI_Aint neg_one = (MPI_Aint) ((MPI_Aint) 0 - (MPI_Aint) 1), const_zero = (MPI_Aint) 0;
1191 -    const int is_unsigned = neg_one > const_zero;
1192 -    if (is_unsigned) {
1193 -        if (sizeof(MPI_Aint) < sizeof(long)) {
1194 -            return PyInt_FromLong((long) value);
1195 -        } else if (sizeof(MPI_Aint) <= sizeof(unsigned long)) {
1196 -            return PyLong_FromUnsignedLong((unsigned long) value);
1197 -#ifdef HAVE_LONG_LONG
1198 -        } else if (sizeof(MPI_Aint) <= sizeof(unsigned PY_LONG_LONG)) {
1199 -            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
1200 -#endif
1201 -        }
1202 -    } else {
1203 -        if (sizeof(MPI_Aint) <= sizeof(long)) {
1204 -            return PyInt_FromLong((long) value);
1205 -#ifdef HAVE_LONG_LONG
1206 -        } else if (sizeof(MPI_Aint) <= sizeof(PY_LONG_LONG)) {
1207 -            return PyLong_FromLongLong((PY_LONG_LONG) value);
1208 -#endif
1209 -        }
1210 -    }
1211 -    {
1212 -        int one = 1; int little = (int)*(unsigned char *)&one;
1213 -        unsigned char *bytes = (unsigned char *)&value;
1214 -        return _PyLong_FromByteArray(bytes, sizeof(MPI_Aint),
1215 -                                     little, !is_unsigned);
1216 -    }
1217 -}
1218 -
1219 -/* CIntToPy */
1220 -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
1221 -    const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
1222 -    const int is_unsigned = neg_one > const_zero;
1223 -    if (is_unsigned) {
1224 -        if (sizeof(int) < sizeof(long)) {
1225 -            return PyInt_FromLong((long) value);
1226 -        } else if (sizeof(int) <= sizeof(unsigned long)) {
1227 -            return PyLong_FromUnsignedLong((unsigned long) value);
1228 -#ifdef HAVE_LONG_LONG
1229 -        } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
1230 -            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
1231 -#endif
1232 -        }
1233 -    } else {
1234 -        if (sizeof(int) <= sizeof(long)) {
1235 -            return PyInt_FromLong((long) value);
1236 -#ifdef HAVE_LONG_LONG
1237 -        } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
1238 -            return PyLong_FromLongLong((PY_LONG_LONG) value);
1239 -#endif
1240 -        }
1241 -    }
1242 -    {
1243 -        int one = 1; int little = (int)*(unsigned char *)&one;
1244 -        unsigned char *bytes = (unsigned char *)&value;
1245 -        return _PyLong_FromByteArray(bytes, sizeof(int),
1246 -                                     little, !is_unsigned);
1247 -    }
1248 -}
1249 -
1250 -/* CIntToPy */
1251 -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
1252 -    const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
1253 -    const int is_unsigned = neg_one > const_zero;
1254 -    if (is_unsigned) {
1255 -        if (sizeof(long) < sizeof(long)) {
1256 -            return PyInt_FromLong((long) value);
1257 -        } else if (sizeof(long) <= sizeof(unsigned long)) {
1258 -            return PyLong_FromUnsignedLong((unsigned long) value);
1259 -#ifdef HAVE_LONG_LONG
1260 -        } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
1261 -            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
1262 -#endif
1263 -        }
1264 -    } else {
1265 -        if (sizeof(long) <= sizeof(long)) {
1266 -            return PyInt_FromLong((long) value);
1267 -#ifdef HAVE_LONG_LONG
1268 -        } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
1269 -            return PyLong_FromLongLong((PY_LONG_LONG) value);
1270 -#endif
1271 -        }
1272 -    }
1273 -    {
1274 -        int one = 1; int little = (int)*(unsigned char *)&one;
1275 -        unsigned char *bytes = (unsigned char *)&value;
1276 -        return _PyLong_FromByteArray(bytes, sizeof(long),
1277 -                                     little, !is_unsigned);
1278 -    }
1279 -}
1280 -
1281 -/* CIntToPy */
1282 -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Offset(MPI_Offset value) {
1283 -    const MPI_Offset neg_one = (MPI_Offset) ((MPI_Offset) 0 - (MPI_Offset) 1), const_zero = (MPI_Offset) 0;
1284 -    const int is_unsigned = neg_one > const_zero;
1285 -    if (is_unsigned) {
1286 -        if (sizeof(MPI_Offset) < sizeof(long)) {
1287 -            return PyInt_FromLong((long) value);
1288 -        } else if (sizeof(MPI_Offset) <= sizeof(unsigned long)) {
1289 -            return PyLong_FromUnsignedLong((unsigned long) value);
1290 -#ifdef HAVE_LONG_LONG
1291 -        } else if (sizeof(MPI_Offset) <= sizeof(unsigned PY_LONG_LONG)) {
1292 -            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
1293 -#endif
1294 -        }
1295 -    } else {
1296 -        if (sizeof(MPI_Offset) <= sizeof(long)) {
1297 -            return PyInt_FromLong((long) value);
1298 -#ifdef HAVE_LONG_LONG
1299 -        } else if (sizeof(MPI_Offset) <= sizeof(PY_LONG_LONG)) {
1300 -            return PyLong_FromLongLong((PY_LONG_LONG) value);
1301 -#endif
1302 -        }
1303 -    }
1304 -    {
1305 -        int one = 1; int little = (int)*(unsigned char *)&one;
1306 -        unsigned char *bytes = (unsigned char *)&value;
1307 -        return _PyLong_FromByteArray(bytes, sizeof(MPI_Offset),
1308 -                                     little, !is_unsigned);
1309 -    }
1310 -}
1311 -
1312 -/* CIntToPy */
1313 -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Fint(MPI_Fint value) {
1314 -    const MPI_Fint neg_one = (MPI_Fint) ((MPI_Fint) 0 - (MPI_Fint) 1), const_zero = (MPI_Fint) 0;
1315 -    const int is_unsigned = neg_one > const_zero;
1316 -    if (is_unsigned) {
1317 -        if (sizeof(MPI_Fint) < sizeof(long)) {
1318 -            return PyInt_FromLong((long) value);
1319 -        } else if (sizeof(MPI_Fint) <= sizeof(unsigned long)) {
1320 -            return PyLong_FromUnsignedLong((unsigned long) value);
1321 -#ifdef HAVE_LONG_LONG
1322 -        } else if (sizeof(MPI_Fint) <= sizeof(unsigned PY_LONG_LONG)) {
1323 -            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
1324 -#endif
1325 -        }
1326 -    } else {
1327 -        if (sizeof(MPI_Fint) <= sizeof(long)) {
1328 -            return PyInt_FromLong((long) value);
1329 -#ifdef HAVE_LONG_LONG
1330 -        } else if (sizeof(MPI_Fint) <= sizeof(PY_LONG_LONG)) {
1331 -            return PyLong_FromLongLong((PY_LONG_LONG) value);
1332 -#endif
1333 -        }
1334 -    }
1335 -    {
1336 -        int one = 1; int little = (int)*(unsigned char *)&one;
1337 -        unsigned char *bytes = (unsigned char *)&value;
1338 -        return _PyLong_FromByteArray(bytes, sizeof(MPI_Fint),
1339 -                                     little, !is_unsigned);
1340 -    }
1341 -}
1342 -
1343 -/* CIntToPy */
1344 -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Count(MPI_Count value) {
1345 -    const MPI_Count neg_one = (MPI_Count) ((MPI_Count) 0 - (MPI_Count) 1), const_zero = (MPI_Count) 0;
1346 -    const int is_unsigned = neg_one > const_zero;
1347 -    if (is_unsigned) {
1348 -        if (sizeof(MPI_Count) < sizeof(long)) {
1349 -            return PyInt_FromLong((long) value);
1350 -        } else if (sizeof(MPI_Count) <= sizeof(unsigned long)) {
1351 -            return PyLong_FromUnsignedLong((unsigned long) value);
1352 -#ifdef HAVE_LONG_LONG
1353 -        } else if (sizeof(MPI_Count) <= sizeof(unsigned PY_LONG_LONG)) {
1354 -            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
1355 -#endif
1356 -        }
1357 -    } else {
1358 -        if (sizeof(MPI_Count) <= sizeof(long)) {
1359 -            return PyInt_FromLong((long) value);
1360 -#ifdef HAVE_LONG_LONG
1361 -        } else if (sizeof(MPI_Count) <= sizeof(PY_LONG_LONG)) {
1362 -            return PyLong_FromLongLong((PY_LONG_LONG) value);
1363 -#endif
1364 -        }
1365 -    }
1366 -    {
1367 -        int one = 1; int little = (int)*(unsigned char *)&one;
1368 -        unsigned char *bytes = (unsigned char *)&value;
1369 -        return _PyLong_FromByteArray(bytes, sizeof(MPI_Count),
1370 -                                     little, !is_unsigned);
1371 -    }
1372 -}
1373 -
1374  /* CIntFromPy */
1375  static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
1376 -    const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
1377 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1378 +#pragma GCC diagnostic push
1379 +#pragma GCC diagnostic ignored "-Wconversion"
1380 +#endif
1381 +    const int neg_one = (int) -1, const_zero = (int) 0;
1382 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1383 +#pragma GCC diagnostic pop
1384 +#endif
1385      const int is_unsigned = neg_one > const_zero;
1386  #if PY_MAJOR_VERSION < 3
1387      if (likely(PyInt_Check(x))) {
1388 @@ -180766,9 +180872,92 @@
1389      return (int) -1;
1390  }
1391  
1392 +/* CIntToPy */
1393 +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Aint(MPI_Aint value) {
1394 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1395 +#pragma GCC diagnostic push
1396 +#pragma GCC diagnostic ignored "-Wconversion"
1397 +#endif
1398 +    const MPI_Aint neg_one = (MPI_Aint) -1, const_zero = (MPI_Aint) 0;
1399 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1400 +#pragma GCC diagnostic pop
1401 +#endif
1402 +    const int is_unsigned = neg_one > const_zero;
1403 +    if (is_unsigned) {
1404 +        if (sizeof(MPI_Aint) < sizeof(long)) {
1405 +            return PyInt_FromLong((long) value);
1406 +        } else if (sizeof(MPI_Aint) <= sizeof(unsigned long)) {
1407 +            return PyLong_FromUnsignedLong((unsigned long) value);
1408 +#ifdef HAVE_LONG_LONG
1409 +        } else if (sizeof(MPI_Aint) <= sizeof(unsigned PY_LONG_LONG)) {
1410 +            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
1411 +#endif
1412 +        }
1413 +    } else {
1414 +        if (sizeof(MPI_Aint) <= sizeof(long)) {
1415 +            return PyInt_FromLong((long) value);
1416 +#ifdef HAVE_LONG_LONG
1417 +        } else if (sizeof(MPI_Aint) <= sizeof(PY_LONG_LONG)) {
1418 +            return PyLong_FromLongLong((PY_LONG_LONG) value);
1419 +#endif
1420 +        }
1421 +    }
1422 +    {
1423 +        int one = 1; int little = (int)*(unsigned char *)&one;
1424 +        unsigned char *bytes = (unsigned char *)&value;
1425 +        return _PyLong_FromByteArray(bytes, sizeof(MPI_Aint),
1426 +                                     little, !is_unsigned);
1427 +    }
1428 +}
1429 +
1430 +/* CIntToPy */
1431 +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
1432 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1433 +#pragma GCC diagnostic push
1434 +#pragma GCC diagnostic ignored "-Wconversion"
1435 +#endif
1436 +    const int neg_one = (int) -1, const_zero = (int) 0;
1437 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1438 +#pragma GCC diagnostic pop
1439 +#endif
1440 +    const int is_unsigned = neg_one > const_zero;
1441 +    if (is_unsigned) {
1442 +        if (sizeof(int) < sizeof(long)) {
1443 +            return PyInt_FromLong((long) value);
1444 +        } else if (sizeof(int) <= sizeof(unsigned long)) {
1445 +            return PyLong_FromUnsignedLong((unsigned long) value);
1446 +#ifdef HAVE_LONG_LONG
1447 +        } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
1448 +            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
1449 +#endif
1450 +        }
1451 +    } else {
1452 +        if (sizeof(int) <= sizeof(long)) {
1453 +            return PyInt_FromLong((long) value);
1454 +#ifdef HAVE_LONG_LONG
1455 +        } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
1456 +            return PyLong_FromLongLong((PY_LONG_LONG) value);
1457 +#endif
1458 +        }
1459 +    }
1460 +    {
1461 +        int one = 1; int little = (int)*(unsigned char *)&one;
1462 +        unsigned char *bytes = (unsigned char *)&value;
1463 +        return _PyLong_FromByteArray(bytes, sizeof(int),
1464 +                                     little, !is_unsigned);
1465 +    }
1466 +}
1467 +
1468  /* CIntFromPy */
1469  static CYTHON_INLINE MPI_Aint __Pyx_PyInt_As_MPI_Aint(PyObject *x) {
1470 -    const MPI_Aint neg_one = (MPI_Aint) ((MPI_Aint) 0 - (MPI_Aint) 1), const_zero = (MPI_Aint) 0;
1471 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1472 +#pragma GCC diagnostic push
1473 +#pragma GCC diagnostic ignored "-Wconversion"
1474 +#endif
1475 +    const MPI_Aint neg_one = (MPI_Aint) -1, const_zero = (MPI_Aint) 0;
1476 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1477 +#pragma GCC diagnostic pop
1478 +#endif
1479      const int is_unsigned = neg_one > const_zero;
1480  #if PY_MAJOR_VERSION < 3
1481      if (likely(PyInt_Check(x))) {
1482 @@ -180957,7 +181146,14 @@
1483  
1484  /* CIntFromPy */
1485  static CYTHON_INLINE MPI_Count __Pyx_PyInt_As_MPI_Count(PyObject *x) {
1486 -    const MPI_Count neg_one = (MPI_Count) ((MPI_Count) 0 - (MPI_Count) 1), const_zero = (MPI_Count) 0;
1487 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1488 +#pragma GCC diagnostic push
1489 +#pragma GCC diagnostic ignored "-Wconversion"
1490 +#endif
1491 +    const MPI_Count neg_one = (MPI_Count) -1, const_zero = (MPI_Count) 0;
1492 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1493 +#pragma GCC diagnostic pop
1494 +#endif
1495      const int is_unsigned = neg_one > const_zero;
1496  #if PY_MAJOR_VERSION < 3
1497      if (likely(PyInt_Check(x))) {
1498 @@ -181146,7 +181342,14 @@
1499  
1500  /* CIntFromPy */
1501  static CYTHON_INLINE MPI_Offset __Pyx_PyInt_As_MPI_Offset(PyObject *x) {
1502 -    const MPI_Offset neg_one = (MPI_Offset) ((MPI_Offset) 0 - (MPI_Offset) 1), const_zero = (MPI_Offset) 0;
1503 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1504 +#pragma GCC diagnostic push
1505 +#pragma GCC diagnostic ignored "-Wconversion"
1506 +#endif
1507 +    const MPI_Offset neg_one = (MPI_Offset) -1, const_zero = (MPI_Offset) 0;
1508 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1509 +#pragma GCC diagnostic pop
1510 +#endif
1511      const int is_unsigned = neg_one > const_zero;
1512  #if PY_MAJOR_VERSION < 3
1513      if (likely(PyInt_Check(x))) {
1514 @@ -181333,9 +181536,54 @@
1515      return (MPI_Offset) -1;
1516  }
1517  
1518 +/* CIntToPy */
1519 +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
1520 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1521 +#pragma GCC diagnostic push
1522 +#pragma GCC diagnostic ignored "-Wconversion"
1523 +#endif
1524 +    const long neg_one = (long) -1, const_zero = (long) 0;
1525 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1526 +#pragma GCC diagnostic pop
1527 +#endif
1528 +    const int is_unsigned = neg_one > const_zero;
1529 +    if (is_unsigned) {
1530 +        if (sizeof(long) < sizeof(long)) {
1531 +            return PyInt_FromLong((long) value);
1532 +        } else if (sizeof(long) <= sizeof(unsigned long)) {
1533 +            return PyLong_FromUnsignedLong((unsigned long) value);
1534 +#ifdef HAVE_LONG_LONG
1535 +        } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
1536 +            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
1537 +#endif
1538 +        }
1539 +    } else {
1540 +        if (sizeof(long) <= sizeof(long)) {
1541 +            return PyInt_FromLong((long) value);
1542 +#ifdef HAVE_LONG_LONG
1543 +        } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
1544 +            return PyLong_FromLongLong((PY_LONG_LONG) value);
1545 +#endif
1546 +        }
1547 +    }
1548 +    {
1549 +        int one = 1; int little = (int)*(unsigned char *)&one;
1550 +        unsigned char *bytes = (unsigned char *)&value;
1551 +        return _PyLong_FromByteArray(bytes, sizeof(long),
1552 +                                     little, !is_unsigned);
1553 +    }
1554 +}
1555 +
1556  /* CIntFromPy */
1557  static CYTHON_INLINE unsigned char __Pyx_PyInt_As_unsigned_char(PyObject *x) {
1558 -    const unsigned char neg_one = (unsigned char) ((unsigned char) 0 - (unsigned char) 1), const_zero = (unsigned char) 0;
1559 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1560 +#pragma GCC diagnostic push
1561 +#pragma GCC diagnostic ignored "-Wconversion"
1562 +#endif
1563 +    const unsigned char neg_one = (unsigned char) -1, const_zero = (unsigned char) 0;
1564 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1565 +#pragma GCC diagnostic pop
1566 +#endif
1567      const int is_unsigned = neg_one > const_zero;
1568  #if PY_MAJOR_VERSION < 3
1569      if (likely(PyInt_Check(x))) {
1570 @@ -181522,9 +181770,92 @@
1571      return (unsigned char) -1;
1572  }
1573  
1574 +/* CIntToPy */
1575 +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Offset(MPI_Offset value) {
1576 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1577 +#pragma GCC diagnostic push
1578 +#pragma GCC diagnostic ignored "-Wconversion"
1579 +#endif
1580 +    const MPI_Offset neg_one = (MPI_Offset) -1, const_zero = (MPI_Offset) 0;
1581 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1582 +#pragma GCC diagnostic pop
1583 +#endif
1584 +    const int is_unsigned = neg_one > const_zero;
1585 +    if (is_unsigned) {
1586 +        if (sizeof(MPI_Offset) < sizeof(long)) {
1587 +            return PyInt_FromLong((long) value);
1588 +        } else if (sizeof(MPI_Offset) <= sizeof(unsigned long)) {
1589 +            return PyLong_FromUnsignedLong((unsigned long) value);
1590 +#ifdef HAVE_LONG_LONG
1591 +        } else if (sizeof(MPI_Offset) <= sizeof(unsigned PY_LONG_LONG)) {
1592 +            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
1593 +#endif
1594 +        }
1595 +    } else {
1596 +        if (sizeof(MPI_Offset) <= sizeof(long)) {
1597 +            return PyInt_FromLong((long) value);
1598 +#ifdef HAVE_LONG_LONG
1599 +        } else if (sizeof(MPI_Offset) <= sizeof(PY_LONG_LONG)) {
1600 +            return PyLong_FromLongLong((PY_LONG_LONG) value);
1601 +#endif
1602 +        }
1603 +    }
1604 +    {
1605 +        int one = 1; int little = (int)*(unsigned char *)&one;
1606 +        unsigned char *bytes = (unsigned char *)&value;
1607 +        return _PyLong_FromByteArray(bytes, sizeof(MPI_Offset),
1608 +                                     little, !is_unsigned);
1609 +    }
1610 +}
1611 +
1612 +/* CIntToPy */
1613 +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Fint(MPI_Fint value) {
1614 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1615 +#pragma GCC diagnostic push
1616 +#pragma GCC diagnostic ignored "-Wconversion"
1617 +#endif
1618 +    const MPI_Fint neg_one = (MPI_Fint) -1, const_zero = (MPI_Fint) 0;
1619 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1620 +#pragma GCC diagnostic pop
1621 +#endif
1622 +    const int is_unsigned = neg_one > const_zero;
1623 +    if (is_unsigned) {
1624 +        if (sizeof(MPI_Fint) < sizeof(long)) {
1625 +            return PyInt_FromLong((long) value);
1626 +        } else if (sizeof(MPI_Fint) <= sizeof(unsigned long)) {
1627 +            return PyLong_FromUnsignedLong((unsigned long) value);
1628 +#ifdef HAVE_LONG_LONG
1629 +        } else if (sizeof(MPI_Fint) <= sizeof(unsigned PY_LONG_LONG)) {
1630 +            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
1631 +#endif
1632 +        }
1633 +    } else {
1634 +        if (sizeof(MPI_Fint) <= sizeof(long)) {
1635 +            return PyInt_FromLong((long) value);
1636 +#ifdef HAVE_LONG_LONG
1637 +        } else if (sizeof(MPI_Fint) <= sizeof(PY_LONG_LONG)) {
1638 +            return PyLong_FromLongLong((PY_LONG_LONG) value);
1639 +#endif
1640 +        }
1641 +    }
1642 +    {
1643 +        int one = 1; int little = (int)*(unsigned char *)&one;
1644 +        unsigned char *bytes = (unsigned char *)&value;
1645 +        return _PyLong_FromByteArray(bytes, sizeof(MPI_Fint),
1646 +                                     little, !is_unsigned);
1647 +    }
1648 +}
1649 +
1650  /* CIntFromPy */
1651  static CYTHON_INLINE MPI_Fint __Pyx_PyInt_As_MPI_Fint(PyObject *x) {
1652 -    const MPI_Fint neg_one = (MPI_Fint) ((MPI_Fint) 0 - (MPI_Fint) 1), const_zero = (MPI_Fint) 0;
1653 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1654 +#pragma GCC diagnostic push
1655 +#pragma GCC diagnostic ignored "-Wconversion"
1656 +#endif
1657 +    const MPI_Fint neg_one = (MPI_Fint) -1, const_zero = (MPI_Fint) 0;
1658 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1659 +#pragma GCC diagnostic pop
1660 +#endif
1661      const int is_unsigned = neg_one > const_zero;
1662  #if PY_MAJOR_VERSION < 3
1663      if (likely(PyInt_Check(x))) {
1664 @@ -181711,9 +182042,54 @@
1665      return (MPI_Fint) -1;
1666  }
1667  
1668 +/* CIntToPy */
1669 +static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Count(MPI_Count value) {
1670 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1671 +#pragma GCC diagnostic push
1672 +#pragma GCC diagnostic ignored "-Wconversion"
1673 +#endif
1674 +    const MPI_Count neg_one = (MPI_Count) -1, const_zero = (MPI_Count) 0;
1675 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1676 +#pragma GCC diagnostic pop
1677 +#endif
1678 +    const int is_unsigned = neg_one > const_zero;
1679 +    if (is_unsigned) {
1680 +        if (sizeof(MPI_Count) < sizeof(long)) {
1681 +            return PyInt_FromLong((long) value);
1682 +        } else if (sizeof(MPI_Count) <= sizeof(unsigned long)) {
1683 +            return PyLong_FromUnsignedLong((unsigned long) value);
1684 +#ifdef HAVE_LONG_LONG
1685 +        } else if (sizeof(MPI_Count) <= sizeof(unsigned PY_LONG_LONG)) {
1686 +            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
1687 +#endif
1688 +        }
1689 +    } else {
1690 +        if (sizeof(MPI_Count) <= sizeof(long)) {
1691 +            return PyInt_FromLong((long) value);
1692 +#ifdef HAVE_LONG_LONG
1693 +        } else if (sizeof(MPI_Count) <= sizeof(PY_LONG_LONG)) {
1694 +            return PyLong_FromLongLong((PY_LONG_LONG) value);
1695 +#endif
1696 +        }
1697 +    }
1698 +    {
1699 +        int one = 1; int little = (int)*(unsigned char *)&one;
1700 +        unsigned char *bytes = (unsigned char *)&value;
1701 +        return _PyLong_FromByteArray(bytes, sizeof(MPI_Count),
1702 +                                     little, !is_unsigned);
1703 +    }
1704 +}
1705 +
1706  /* CIntFromPy */
1707  static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
1708 -    const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
1709 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1710 +#pragma GCC diagnostic push
1711 +#pragma GCC diagnostic ignored "-Wconversion"
1712 +#endif
1713 +    const long neg_one = (long) -1, const_zero = (long) 0;
1714 +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
1715 +#pragma GCC diagnostic pop
1716 +#endif
1717      const int is_unsigned = neg_one > const_zero;
1718  #if PY_MAJOR_VERSION < 3
1719      if (likely(PyInt_Check(x))) {
1720 @@ -182002,11 +182378,33 @@
1721  
1722  /* CheckBinaryVersion */
1723  static int __Pyx_check_binary_version(void) {
1724 -    char ctversion[4], rtversion[4];
1725 -    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
1726 -    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
1727 -    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
1728 +    char ctversion[5];
1729 +    int same=1, i, found_dot;
1730 +    const char* rt_from_call = Py_GetVersion();
1731 +    PyOS_snprintf(ctversion, 5, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
1732 +    found_dot = 0;
1733 +    for (i = 0; i < 4; i++) {
1734 +        if (!ctversion[i]) {
1735 +            same = (rt_from_call[i] < '0' || rt_from_call[i] > '9');
1736 +            break;
1737 +        }
1738 +        if (rt_from_call[i] != ctversion[i]) {
1739 +            same = 0;
1740 +            break;
1741 +        }
1742 +    }
1743 +    if (!same) {
1744 +        char rtversion[5] = {'\0'};
1745          char message[200];
1746 +        for (i=0; i<4; ++i) {
1747 +            if (rt_from_call[i] == '.') {
1748 +                if (found_dot) break;
1749 +                found_dot = 1;
1750 +            } else if (rt_from_call[i] < '0' || rt_from_call[i] > '9') {
1751 +                break;
1752 +            }
1753 +            rtversion[i] = rt_from_call[i];
1754 +        }
1755          PyOS_snprintf(message, sizeof(message),
1756                        "compiletime version %s of module '%.100s' "
1757                        "does not match runtime version %s",
1758 @@ -182301,6 +182699,23 @@
1759    Py_DECREF(x);
1760    return ival;
1761  }
1762 +static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
1763 +  if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
1764 +    return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
1765 +#if PY_MAJOR_VERSION < 3
1766 +  } else if (likely(PyInt_CheckExact(o))) {
1767 +    return PyInt_AS_LONG(o);
1768 +#endif
1769 +  } else {
1770 +    Py_ssize_t ival;
1771 +    PyObject *x;
1772 +    x = PyNumber_Index(o);
1773 +    if (!x) return -1;
1774 +    ival = PyInt_AsLong(x);
1775 +    Py_DECREF(x);
1776 +    return ival;
1777 +  }
1778 +}
1779  static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
1780    return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
1781  }