--- /dev/null
+--- ParaView/VTK/ThirdParty/mpi4py/vtkmpi4py/src/mpi4py.MPI.c 2022-11-18 15:26:55.000000000 +0100
++++ ParaView_dev/VTK/ThirdParty/mpi4py/vtkmpi4py/src/mpi4py.MPI.c 2024-06-27 08:35:16.687060202 +0200
+@@ -1,14 +1,16 @@
+-/* Generated by Cython 0.29.21 */
++/* Generated by Cython 0.29.32 */
+
++#ifndef PY_SSIZE_T_CLEAN
+ #define PY_SSIZE_T_CLEAN
++#endif /* PY_SSIZE_T_CLEAN */
+ #include "Python.h"
+ #ifndef Py_PYTHON_H
+ #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+ #error Cython requires Python 2.6+ or Python 3.3+.
+ #else
+-#define CYTHON_ABI "0_29_21"
+-#define CYTHON_HEX_VERSION 0x001D15F0
++#define CYTHON_ABI "0_29_32"
++#define CYTHON_HEX_VERSION 0x001D20F0
+ #define CYTHON_FUTURE_DIVISION 0
+ #include <stddef.h>
+ #ifndef offsetof
+@@ -47,6 +49,7 @@
+ #define CYTHON_COMPILING_IN_PYPY 1
+ #define CYTHON_COMPILING_IN_PYSTON 0
+ #define CYTHON_COMPILING_IN_CPYTHON 0
++ #define CYTHON_COMPILING_IN_NOGIL 0
+ #undef CYTHON_USE_TYPE_SLOTS
+ #define CYTHON_USE_TYPE_SLOTS 0
+ #undef CYTHON_USE_PYTYPE_LOOKUP
+@@ -83,10 +86,14 @@
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
++ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
++ #define CYTHON_UPDATE_DESCRIPTOR_DOC (PYPY_VERSION_HEX >= 0x07030900)
++ #endif
+ #elif defined(PYSTON_VERSION)
+ #define CYTHON_COMPILING_IN_PYPY 0
+ #define CYTHON_COMPILING_IN_PYSTON 1
+ #define CYTHON_COMPILING_IN_CPYTHON 0
++ #define CYTHON_COMPILING_IN_NOGIL 0
+ #ifndef CYTHON_USE_TYPE_SLOTS
+ #define CYTHON_USE_TYPE_SLOTS 1
+ #endif
+@@ -124,10 +131,59 @@
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
++ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
++ #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
++ #endif
++#elif defined(PY_NOGIL)
++ #define CYTHON_COMPILING_IN_PYPY 0
++ #define CYTHON_COMPILING_IN_PYSTON 0
++ #define CYTHON_COMPILING_IN_CPYTHON 0
++ #define CYTHON_COMPILING_IN_NOGIL 1
++ #ifndef CYTHON_USE_TYPE_SLOTS
++ #define CYTHON_USE_TYPE_SLOTS 1
++ #endif
++ #undef CYTHON_USE_PYTYPE_LOOKUP
++ #define CYTHON_USE_PYTYPE_LOOKUP 0
++ #ifndef CYTHON_USE_ASYNC_SLOTS
++ #define CYTHON_USE_ASYNC_SLOTS 1
++ #endif
++ #undef CYTHON_USE_PYLIST_INTERNALS
++ #define CYTHON_USE_PYLIST_INTERNALS 0
++ #ifndef CYTHON_USE_UNICODE_INTERNALS
++ #define CYTHON_USE_UNICODE_INTERNALS 1
++ #endif
++ #undef CYTHON_USE_UNICODE_WRITER
++ #define CYTHON_USE_UNICODE_WRITER 0
++ #undef CYTHON_USE_PYLONG_INTERNALS
++ #define CYTHON_USE_PYLONG_INTERNALS 0
++ #ifndef CYTHON_AVOID_BORROWED_REFS
++ #define CYTHON_AVOID_BORROWED_REFS 0
++ #endif
++ #ifndef CYTHON_ASSUME_SAFE_MACROS
++ #define CYTHON_ASSUME_SAFE_MACROS 1
++ #endif
++ #ifndef CYTHON_UNPACK_METHODS
++ #define CYTHON_UNPACK_METHODS 1
++ #endif
++ #undef CYTHON_FAST_THREAD_STATE
++ #define CYTHON_FAST_THREAD_STATE 0
++ #undef CYTHON_FAST_PYCALL
++ #define CYTHON_FAST_PYCALL 0
++ #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
++ #define CYTHON_PEP489_MULTI_PHASE_INIT 1
++ #endif
++ #ifndef CYTHON_USE_TP_FINALIZE
++ #define CYTHON_USE_TP_FINALIZE 1
++ #endif
++ #undef CYTHON_USE_DICT_VERSIONS
++ #define CYTHON_USE_DICT_VERSIONS 0
++ #undef CYTHON_USE_EXC_INFO_STACK
++ #define CYTHON_USE_EXC_INFO_STACK 0
+ #else
+ #define CYTHON_COMPILING_IN_PYPY 0
+ #define CYTHON_COMPILING_IN_PYSTON 0
+ #define CYTHON_COMPILING_IN_CPYTHON 1
++ #define CYTHON_COMPILING_IN_NOGIL 0
+ #ifndef CYTHON_USE_TYPE_SLOTS
+ #define CYTHON_USE_TYPE_SLOTS 1
+ #endif
+@@ -155,7 +211,7 @@
+ #ifndef CYTHON_USE_UNICODE_INTERNALS
+ #define CYTHON_USE_UNICODE_INTERNALS 1
+ #endif
+- #if PY_VERSION_HEX < 0x030300F0
++ #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2
+ #undef CYTHON_USE_UNICODE_WRITER
+ #define CYTHON_USE_UNICODE_WRITER 0
+ #elif !defined(CYTHON_USE_UNICODE_WRITER)
+@@ -170,11 +226,14 @@
+ #ifndef CYTHON_UNPACK_METHODS
+ #define CYTHON_UNPACK_METHODS 1
+ #endif
+- #ifndef CYTHON_FAST_THREAD_STATE
+- #define CYTHON_FAST_THREAD_STATE 1
++ #if PY_VERSION_HEX >= 0x030B00A4
++ #undef CYTHON_FAST_THREAD_STATE
++ #define CYTHON_FAST_THREAD_STATE 0
++ #elif !defined(CYTHON_FAST_THREAD_STATE)
++ #define CYTHON_FAST_THREAD_STATE (PY_VERSION_HEX < 0x030C00A6)
+ #endif
+ #ifndef CYTHON_FAST_PYCALL
+- #define CYTHON_FAST_PYCALL 1
++ #define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030A0000)
+ #endif
+ #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
+ #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
+@@ -185,15 +244,23 @@
+ #ifndef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
+ #endif
+- #ifndef CYTHON_USE_EXC_INFO_STACK
++ #if PY_VERSION_HEX >= 0x030B00A4
++ #undef CYTHON_USE_EXC_INFO_STACK
++ #define CYTHON_USE_EXC_INFO_STACK 0
++ #elif !defined(CYTHON_USE_EXC_INFO_STACK)
+ #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
+ #endif
++ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
++ #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
++ #endif
+ #endif
+ #if !defined(CYTHON_FAST_PYCCALL)
+ #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
+ #endif
+ #if CYTHON_USE_PYLONG_INTERNALS
+- #include "longintrepr.h"
++ #if PY_MAJOR_VERSION < 3
++ #include "longintrepr.h"
++ #endif
+ #undef SHIFT
+ #undef BASE
+ #undef MASK
+@@ -310,9 +377,68 @@
+ #define __Pyx_DefaultClassType PyClass_Type
+ #else
+ #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+-#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
+- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
+- PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
++ #define __Pyx_DefaultClassType PyType_Type
++#if PY_VERSION_HEX >= 0x030B00A1
++ static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f,
++ PyObject *code, PyObject *c, PyObject* n, PyObject *v,
++ PyObject *fv, PyObject *cell, PyObject* fn,
++ PyObject *name, int fline, PyObject *lnos) {
++ PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL;
++ PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL;
++ const char *fn_cstr=NULL;
++ const char *name_cstr=NULL;
++ PyCodeObject* co=NULL;
++ PyObject *type, *value, *traceback;
++ PyErr_Fetch(&type, &value, &traceback);
++ if (!(kwds=PyDict_New())) goto end;
++ if (!(argcount=PyLong_FromLong(a))) goto end;
++ if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end;
++ if (!(posonlyargcount=PyLong_FromLong(0))) goto end;
++ if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end;
++ if (!(kwonlyargcount=PyLong_FromLong(k))) goto end;
++ if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end;
++ if (!(nlocals=PyLong_FromLong(l))) goto end;
++ if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end;
++ if (!(stacksize=PyLong_FromLong(s))) goto end;
++ if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end;
++ if (!(flags=PyLong_FromLong(f))) goto end;
++ if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end;
++ if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end;
++ if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end;
++ if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end;
++ if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end;
++ if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end;
++ if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end;
++ if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end;
++ if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end;
++ if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end;
++ if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end;
++ if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too;
++ if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here
++ if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too;
++ Py_XDECREF((PyObject*)co);
++ co = (PyCodeObject*)call_result;
++ call_result = NULL;
++ if (0) {
++ cleanup_code_too:
++ Py_XDECREF((PyObject*)co);
++ co = NULL;
++ }
++ end:
++ Py_XDECREF(kwds);
++ Py_XDECREF(argcount);
++ Py_XDECREF(posonlyargcount);
++ Py_XDECREF(kwonlyargcount);
++ Py_XDECREF(nlocals);
++ Py_XDECREF(stacksize);
++ Py_XDECREF(replace);
++ Py_XDECREF(call_result);
++ Py_XDECREF(empty);
++ if (type) {
++ PyErr_Restore(type, value, traceback);
++ }
++ return co;
++ }
+ #else
+ #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
+ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+@@ -426,8 +552,12 @@
+ #endif
+ #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+ #define CYTHON_PEP393_ENABLED 1
+- #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
++ #if defined(_PyUnicode_Ready)
++ #define __Pyx_PyUnicode_READY(op) (likely(_PyUnicode_Ready(op)) ?\
+ 0 : _PyUnicode_Ready((PyObject *)(op)))
++ #else
++ #define __Pyx_PyUnicode_READY(op) (0)
++ #endif
+ #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
+ #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+ #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
+@@ -435,8 +565,12 @@
+ #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
+ #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
+ #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
+- #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
+- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
++ #if defined(_PyUnicode_Ready) && defined(PyUnicode_GET_SIZE)
++ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
++ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(_PyUnicode_Ready(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
++ #else
++ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(_PyUnicode_Ready(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
++ #endif
+ #else
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
+ #endif
+@@ -542,10 +676,10 @@
+ #if PY_VERSION_HEX < 0x030200A4
+ typedef long Py_hash_t;
+ #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+- #define __Pyx_PyInt_AsHash_t PyInt_AsLong
++ #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t
+ #else
+ #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+- #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t
++ #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t
+ #endif
+ #if PY_MAJOR_VERSION >= 3
+ #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
+@@ -570,8 +704,10 @@
+ } __Pyx_PyAsyncMethodsStruct;
+ #endif
+
+-#if defined(WIN32) || defined(MS_WINDOWS)
+- #define _USE_MATH_DEFINES
++#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)
++ #if !defined(_USE_MATH_DEFINES)
++ #define _USE_MATH_DEFINES
++ #endif
+ #endif
+ #include <math.h>
+ #ifdef NAN
+@@ -703,6 +839,7 @@
+ (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
+ static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+ static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
++static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
+ #if CYTHON_ASSUME_SAFE_MACROS
+ #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+ #else
+@@ -1747,13 +1884,21 @@
+ #ifndef Py_MEMBER_SIZE
+ #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
+ #endif
++#if CYTHON_FAST_PYCALL
+ static size_t __pyx_pyframe_localsplus_offset = 0;
+ #include "frameobject.h"
++#if PY_VERSION_HEX >= 0x030b00a6
++ #ifndef Py_BUILD_CORE
++ #define Py_BUILD_CORE 1
++ #endif
++ #include "internal/pycore_frame.h"
++#endif
+ #define __Pxy_PyFrame_Initialize_Offsets()\
+ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
+ (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
+ #define __Pyx_PyFrame_GetLocalsplus(frame)\
+ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
++#endif // CYTHON_FAST_PYCALL
+ #endif
+
+ /* PyObjectCall.proto */
+@@ -2340,26 +2485,19 @@
+ static void __Pyx_AddTraceback(const char *funcname, int c_line,
+ int py_line, const char *filename);
+
+-/* CIntToPy.proto */
+-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Aint(MPI_Aint value);
+-
+-/* CIntToPy.proto */
+-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
+-
+-/* CIntToPy.proto */
+-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
++/* GCCDiagnostics.proto */
++#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
++#define __Pyx_HAS_GCC_DIAGNOSTIC
++#endif
+
+-/* CIntToPy.proto */
+-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Offset(MPI_Offset value);
++/* CIntFromPy.proto */
++static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
+
+ /* CIntToPy.proto */
+-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Fint(MPI_Fint value);
++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Aint(MPI_Aint value);
+
+ /* CIntToPy.proto */
+-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Count(MPI_Count value);
+-
+-/* CIntFromPy.proto */
+-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
+
+ /* CIntFromPy.proto */
+ static CYTHON_INLINE MPI_Aint __Pyx_PyInt_As_MPI_Aint(PyObject *);
+@@ -2370,12 +2508,24 @@
+ /* CIntFromPy.proto */
+ static CYTHON_INLINE MPI_Offset __Pyx_PyInt_As_MPI_Offset(PyObject *);
+
++/* CIntToPy.proto */
++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
++
+ /* CIntFromPy.proto */
+ static CYTHON_INLINE unsigned char __Pyx_PyInt_As_unsigned_char(PyObject *);
+
++/* CIntToPy.proto */
++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Offset(MPI_Offset value);
++
++/* CIntToPy.proto */
++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Fint(MPI_Fint value);
++
+ /* CIntFromPy.proto */
+ static CYTHON_INLINE MPI_Fint __Pyx_PyInt_As_MPI_Fint(PyObject *);
+
++/* CIntToPy.proto */
++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Count(MPI_Count value);
++
+ /* CIntFromPy.proto */
+ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
+
+@@ -16973,7 +17123,8 @@
+ PyObject *__pyx_t_2 = NULL;
+ int __pyx_t_3;
+ int __pyx_t_4;
+- MPI_Status __pyx_t_5;
++ PyObject *__pyx_t_5 = NULL;
++ MPI_Status __pyx_t_6;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+@@ -17073,10 +17224,13 @@
+ PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
+ __PYX_ERR(13, 79, __pyx_L1_error)
+ }
+- __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)
++ __pyx_t_2 = PyDict_Copy(__pyx_v_self->kargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 79, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_2);
++ __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)
++ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "mpi4py/MPI/reqimpl.pxi":80
+ * sts.ob_mpi = status[0]
+@@ -17085,8 +17239,8 @@
+ * if self.cancel_fn is None:
+ * <void>MPI_Status_set_cancelled(status, 0)
+ */
+- __pyx_t_5 = __pyx_v_sts->ob_mpi;
+- (__pyx_v_status[0]) = __pyx_t_5;
++ __pyx_t_6 = __pyx_v_sts->ob_mpi;
++ (__pyx_v_status[0]) = __pyx_t_6;
+
+ /* "mpi4py/MPI/reqimpl.pxi":81
+ * self.query_fn(sts, *self.args, **self.kargs)
+@@ -17148,6 +17302,7 @@
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_1);
+ __Pyx_XDECREF(__pyx_t_2);
++ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_AddTraceback("mpi4py.MPI._p_greq.query", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = -1;
+ __pyx_L0:;
+@@ -17170,6 +17325,7 @@
+ int __pyx_t_1;
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
++ PyObject *__pyx_t_4 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+@@ -17201,9 +17357,12 @@
+ PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
+ __PYX_ERR(13, 87, __pyx_L1_error)
+ }
+- __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)
++ __pyx_t_3 = PyDict_Copy(__pyx_v_self->kargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 87, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_3);
++ __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)
++ __Pyx_GOTREF(__pyx_t_4);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+ /* "mpi4py/MPI/reqimpl.pxi":86
+ *
+@@ -17235,6 +17394,7 @@
+ /* function exit code */
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_3);
++ __Pyx_XDECREF(__pyx_t_4);
+ __Pyx_AddTraceback("mpi4py.MPI._p_greq.free", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = -1;
+ __pyx_L0:;
+@@ -17257,6 +17417,7 @@
+ int __pyx_t_2;
+ PyObject *__pyx_t_3 = NULL;
+ PyObject *__pyx_t_4 = NULL;
++ PyObject *__pyx_t_5 = NULL;
+ int __pyx_lineno = 0;
+ const char *__pyx_filename = NULL;
+ int __pyx_clineno = 0;
+@@ -17298,10 +17459,13 @@
+ PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
+ __PYX_ERR(13, 92, __pyx_L1_error)
+ }
+- __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)
++ __pyx_t_4 = PyDict_Copy(__pyx_v_self->kargs); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 92, __pyx_L1_error)
+ __Pyx_GOTREF(__pyx_t_4);
++ __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)
++ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+ /* "mpi4py/MPI/reqimpl.pxi":91
+ *
+@@ -17334,6 +17498,7 @@
+ __pyx_L1_error:;
+ __Pyx_XDECREF(__pyx_t_3);
+ __Pyx_XDECREF(__pyx_t_4);
++ __Pyx_XDECREF(__pyx_t_5);
+ __Pyx_AddTraceback("mpi4py.MPI._p_greq.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
+ __pyx_r = -1;
+ __pyx_L0:;
+@@ -157790,12 +157955,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Datatype(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -158075,12 +158243,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Request(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -158285,12 +158456,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Prequest(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -158370,12 +158544,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Grequest(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -158455,12 +158632,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Message(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -158656,12 +158836,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Op(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -158843,12 +159026,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Group(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -159039,12 +159225,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Info(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -159258,12 +159447,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Errhandler(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -159428,12 +159620,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Comm(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -159770,12 +159965,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Intracomm(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -159870,12 +160068,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Topocomm(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -159999,12 +160200,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Cartcomm(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -160122,12 +160326,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Graphcomm(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -160253,12 +160460,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Distgraphcomm(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -160338,12 +160548,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Intercomm(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -160438,12 +160651,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_Win(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -160749,12 +160965,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_File(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -161025,12 +161244,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI_memory(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+@@ -161201,12 +161423,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_mem(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+@@ -161297,12 +161522,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+ static struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq __pyx_vtable_6mpi4py_3MPI__p_greq;
+
+@@ -161443,12 +161671,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+ static struct __pyx_vtabstruct_6mpi4py_3MPI__p_datarep __pyx_vtable_6mpi4py_3MPI__p_datarep;
+
+@@ -161573,12 +161804,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_keyval(PyTypeObject *t, PyObject *a, PyObject *k) {
+@@ -161740,12 +161974,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_message(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+@@ -161868,12 +162105,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+ static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_p2p __pyx_vtable_6mpi4py_3MPI__p_msg_p2p;
+
+@@ -161982,12 +162222,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+ static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco __pyx_vtable_6mpi4py_3MPI__p_msg_cco;
+
+@@ -162112,12 +162355,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+ static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_ccow __pyx_vtable_6mpi4py_3MPI__p_msg_ccow;
+
+@@ -162234,12 +162480,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+ static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma __pyx_vtable_6mpi4py_3MPI__p_msg_rma;
+
+@@ -162372,12 +162621,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+ static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_io __pyx_vtable_6mpi4py_3MPI__p_msg_io;
+
+@@ -162486,12 +162738,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+ static struct __pyx_vtabstruct_6mpi4py_3MPI_Pickle __pyx_vtable_6mpi4py_3MPI_Pickle;
+
+@@ -162637,12 +162892,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0, /*tp_finalize*/
+ #endif
+- #if PY_VERSION_HEX >= 0x030800b1
++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0, /*tp_vectorcall*/
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0, /*tp_print*/
+ #endif
++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0, /*tp_pypy_flags*/
++ #endif
+ };
+
+ static PyMethodDef __pyx_methods[] = {
+@@ -165349,11 +165607,9 @@
+ #endif
+ /*--- Library function declarations ---*/
+ /*--- Threads initialization code ---*/
+- #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+- #ifdef WITH_THREAD /* Python build with threading support? */
++ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+ PyEval_InitThreads();
+ #endif
+- #endif
+ /*--- Module creation code ---*/
+ #if CYTHON_PEP489_MULTI_PHASE_INIT
+ __pyx_m = __pyx_pyinit_module;
+@@ -177405,7 +177661,7 @@
+ #if CYTHON_COMPILING_IN_CPYTHON
+ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
+ PyObject *result;
+- ternaryfunc call = func->ob_type->tp_call;
++ ternaryfunc call = Py_TYPE(func)->tp_call;
+ if (unlikely(!call))
+ return PyObject_Call(func, arg, kw);
+ if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
+@@ -177492,7 +177748,7 @@
+ if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
+ return __Pyx_PyObject_CallMethO(func, arg);
+ #if CYTHON_FAST_PYCCALL
+- } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) {
++ } else if (__Pyx_PyFastCFunction_Check(func)) {
+ return __Pyx_PyCFunction_FastCall(func, &arg, 1);
+ #endif
+ }
+@@ -177684,7 +177940,7 @@
+ return (equals == Py_EQ);
+ } else {
+ int result;
+-#if CYTHON_USE_UNICODE_INTERNALS
++#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000)
+ Py_hash_t hash1, hash2;
+ hash1 = ((PyBytesObject*)s1)->ob_shash;
+ hash2 = ((PyBytesObject*)s2)->ob_shash;
+@@ -177958,12 +178214,12 @@
+ Py_XDECREF(tmp_tb);
+ #else
+ PyThreadState *tstate = __Pyx_PyThreadState_Current;
+- PyObject* tmp_tb = tstate->curexc_traceback;
+- if (tb != tmp_tb) {
+- Py_INCREF(tb);
+- tstate->curexc_traceback = tb;
+- Py_XDECREF(tmp_tb);
+- }
++ /*PyObject* tmp_tb = tstate->curexc_traceback;*/
++ /*if (tb != tmp_tb) {*/
++ /*Py_INCREF(tb);*/
++ /*tstate->curexc_traceback = tb;*/
++ /*Py_XDECREF(tmp_tb);*/
++ /*}*/
+ #endif
+ }
+ bad:
+@@ -179668,7 +179924,8 @@
+ __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
+ {
+ #if PY_MAJOR_VERSION >= 3
+- return PyUnicode_FromString(m->func.m_ml->ml_name);
++ Py_INCREF(m->func_qualname);
++ return m->func_qualname;
+ #else
+ return PyString_FromString(m->func.m_ml->ml_name);
+ #endif
+@@ -179871,6 +180128,9 @@
+ self = PyTuple_GetItem(args, 0);
+ if (unlikely(!self)) {
+ Py_DECREF(new_args);
++ PyErr_Format(PyExc_TypeError,
++ "unbound method %.200S() needs an argument",
++ cyfunc->func_qualname);
+ return NULL;
+ }
+ result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);
+@@ -179939,12 +180199,15 @@
+ #if PY_VERSION_HEX >= 0x030400a1
+ 0,
+ #endif
+-#if PY_VERSION_HEX >= 0x030800b1
++#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
+ 0,
+ #endif
+ #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
+ 0,
+ #endif
++#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000
++ 0,
++#endif
+ };
+ static int __pyx_CyFunction_init(void) {
+ __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
+@@ -180194,7 +180457,7 @@
+ }
+ if (!use_cline) {
+ c_line = 0;
+- PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
++ (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
+ }
+ else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
+ c_line = 0;
+@@ -180288,33 +180551,40 @@
+ #include "compile.h"
+ #include "frameobject.h"
+ #include "traceback.h"
++#if PY_VERSION_HEX >= 0x030b00a6
++ #ifndef Py_BUILD_CORE
++ #define Py_BUILD_CORE 1
++ #endif
++ #include "internal/pycore_frame.h"
++#endif
+ static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+ const char *funcname, int c_line,
+ int py_line, const char *filename) {
+- PyCodeObject *py_code = 0;
+- PyObject *py_srcfile = 0;
+- PyObject *py_funcname = 0;
++ PyCodeObject *py_code = NULL;
++ PyObject *py_funcname = NULL;
+ #if PY_MAJOR_VERSION < 3
++ PyObject *py_srcfile = NULL;
+ py_srcfile = PyString_FromString(filename);
+- #else
+- py_srcfile = PyUnicode_FromString(filename);
+- #endif
+ if (!py_srcfile) goto bad;
++ #endif
+ if (c_line) {
+ #if PY_MAJOR_VERSION < 3
+ py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
++ if (!py_funcname) goto bad;
+ #else
+ py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
++ if (!py_funcname) goto bad;
++ funcname = PyUnicode_AsUTF8(py_funcname);
++ if (!funcname) goto bad;
+ #endif
+ }
+ else {
+ #if PY_MAJOR_VERSION < 3
+ py_funcname = PyString_FromString(funcname);
+- #else
+- py_funcname = PyUnicode_FromString(funcname);
++ if (!py_funcname) goto bad;
+ #endif
+ }
+- if (!py_funcname) goto bad;
++ #if PY_MAJOR_VERSION < 3
+ py_code = __Pyx_PyCode_New(
+ 0,
+ 0,
+@@ -180333,11 +180603,16 @@
+ __pyx_empty_bytes /*PyObject *lnotab*/
+ );
+ Py_DECREF(py_srcfile);
+- Py_DECREF(py_funcname);
++ #else
++ py_code = PyCode_NewEmpty(filename, funcname, py_line);
++ #endif
++ Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline
+ return py_code;
+ bad:
+- Py_XDECREF(py_srcfile);
+ Py_XDECREF(py_funcname);
++ #if PY_MAJOR_VERSION < 3
++ Py_XDECREF(py_srcfile);
++ #endif
+ return NULL;
+ }
+ static void __Pyx_AddTraceback(const char *funcname, int c_line,
+@@ -180345,14 +180620,24 @@
+ PyCodeObject *py_code = 0;
+ PyFrameObject *py_frame = 0;
+ PyThreadState *tstate = __Pyx_PyThreadState_Current;
++ PyObject *ptype, *pvalue, *ptraceback;
+ if (c_line) {
+ c_line = __Pyx_CLineForTraceback(tstate, c_line);
+ }
+ py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
+ if (!py_code) {
++ __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
+ py_code = __Pyx_CreateCodeObjectForTraceback(
+ funcname, c_line, py_line, filename);
+- if (!py_code) goto bad;
++ if (!py_code) {
++ /* If the code object creation fails, then we should clear the
++ fetched exception references and propagate the new exception */
++ Py_XDECREF(ptype);
++ Py_XDECREF(pvalue);
++ Py_XDECREF(ptraceback);
++ goto bad;
++ }
++ __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
+ __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
+ }
+ py_frame = PyFrame_New(
+@@ -180391,195 +180676,16 @@
+ return (target_type) value;\
+ }
+
+-/* CIntToPy */
+-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Aint(MPI_Aint value) {
+- const MPI_Aint neg_one = (MPI_Aint) ((MPI_Aint) 0 - (MPI_Aint) 1), const_zero = (MPI_Aint) 0;
+- const int is_unsigned = neg_one > const_zero;
+- if (is_unsigned) {
+- if (sizeof(MPI_Aint) < sizeof(long)) {
+- return PyInt_FromLong((long) value);
+- } else if (sizeof(MPI_Aint) <= sizeof(unsigned long)) {
+- return PyLong_FromUnsignedLong((unsigned long) value);
+-#ifdef HAVE_LONG_LONG
+- } else if (sizeof(MPI_Aint) <= sizeof(unsigned PY_LONG_LONG)) {
+- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+-#endif
+- }
+- } else {
+- if (sizeof(MPI_Aint) <= sizeof(long)) {
+- return PyInt_FromLong((long) value);
+-#ifdef HAVE_LONG_LONG
+- } else if (sizeof(MPI_Aint) <= sizeof(PY_LONG_LONG)) {
+- return PyLong_FromLongLong((PY_LONG_LONG) value);
+-#endif
+- }
+- }
+- {
+- int one = 1; int little = (int)*(unsigned char *)&one;
+- unsigned char *bytes = (unsigned char *)&value;
+- return _PyLong_FromByteArray(bytes, sizeof(MPI_Aint),
+- little, !is_unsigned);
+- }
+-}
+-
+-/* CIntToPy */
+-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
+- const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
+- const int is_unsigned = neg_one > const_zero;
+- if (is_unsigned) {
+- if (sizeof(int) < sizeof(long)) {
+- return PyInt_FromLong((long) value);
+- } else if (sizeof(int) <= sizeof(unsigned long)) {
+- return PyLong_FromUnsignedLong((unsigned long) value);
+-#ifdef HAVE_LONG_LONG
+- } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
+- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+-#endif
+- }
+- } else {
+- if (sizeof(int) <= sizeof(long)) {
+- return PyInt_FromLong((long) value);
+-#ifdef HAVE_LONG_LONG
+- } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
+- return PyLong_FromLongLong((PY_LONG_LONG) value);
+-#endif
+- }
+- }
+- {
+- int one = 1; int little = (int)*(unsigned char *)&one;
+- unsigned char *bytes = (unsigned char *)&value;
+- return _PyLong_FromByteArray(bytes, sizeof(int),
+- little, !is_unsigned);
+- }
+-}
+-
+-/* CIntToPy */
+-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
+- const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
+- const int is_unsigned = neg_one > const_zero;
+- if (is_unsigned) {
+- if (sizeof(long) < sizeof(long)) {
+- return PyInt_FromLong((long) value);
+- } else if (sizeof(long) <= sizeof(unsigned long)) {
+- return PyLong_FromUnsignedLong((unsigned long) value);
+-#ifdef HAVE_LONG_LONG
+- } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
+- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+-#endif
+- }
+- } else {
+- if (sizeof(long) <= sizeof(long)) {
+- return PyInt_FromLong((long) value);
+-#ifdef HAVE_LONG_LONG
+- } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
+- return PyLong_FromLongLong((PY_LONG_LONG) value);
+-#endif
+- }
+- }
+- {
+- int one = 1; int little = (int)*(unsigned char *)&one;
+- unsigned char *bytes = (unsigned char *)&value;
+- return _PyLong_FromByteArray(bytes, sizeof(long),
+- little, !is_unsigned);
+- }
+-}
+-
+-/* CIntToPy */
+-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Offset(MPI_Offset value) {
+- const MPI_Offset neg_one = (MPI_Offset) ((MPI_Offset) 0 - (MPI_Offset) 1), const_zero = (MPI_Offset) 0;
+- const int is_unsigned = neg_one > const_zero;
+- if (is_unsigned) {
+- if (sizeof(MPI_Offset) < sizeof(long)) {
+- return PyInt_FromLong((long) value);
+- } else if (sizeof(MPI_Offset) <= sizeof(unsigned long)) {
+- return PyLong_FromUnsignedLong((unsigned long) value);
+-#ifdef HAVE_LONG_LONG
+- } else if (sizeof(MPI_Offset) <= sizeof(unsigned PY_LONG_LONG)) {
+- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+-#endif
+- }
+- } else {
+- if (sizeof(MPI_Offset) <= sizeof(long)) {
+- return PyInt_FromLong((long) value);
+-#ifdef HAVE_LONG_LONG
+- } else if (sizeof(MPI_Offset) <= sizeof(PY_LONG_LONG)) {
+- return PyLong_FromLongLong((PY_LONG_LONG) value);
+-#endif
+- }
+- }
+- {
+- int one = 1; int little = (int)*(unsigned char *)&one;
+- unsigned char *bytes = (unsigned char *)&value;
+- return _PyLong_FromByteArray(bytes, sizeof(MPI_Offset),
+- little, !is_unsigned);
+- }
+-}
+-
+-/* CIntToPy */
+-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Fint(MPI_Fint value) {
+- const MPI_Fint neg_one = (MPI_Fint) ((MPI_Fint) 0 - (MPI_Fint) 1), const_zero = (MPI_Fint) 0;
+- const int is_unsigned = neg_one > const_zero;
+- if (is_unsigned) {
+- if (sizeof(MPI_Fint) < sizeof(long)) {
+- return PyInt_FromLong((long) value);
+- } else if (sizeof(MPI_Fint) <= sizeof(unsigned long)) {
+- return PyLong_FromUnsignedLong((unsigned long) value);
+-#ifdef HAVE_LONG_LONG
+- } else if (sizeof(MPI_Fint) <= sizeof(unsigned PY_LONG_LONG)) {
+- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+-#endif
+- }
+- } else {
+- if (sizeof(MPI_Fint) <= sizeof(long)) {
+- return PyInt_FromLong((long) value);
+-#ifdef HAVE_LONG_LONG
+- } else if (sizeof(MPI_Fint) <= sizeof(PY_LONG_LONG)) {
+- return PyLong_FromLongLong((PY_LONG_LONG) value);
+-#endif
+- }
+- }
+- {
+- int one = 1; int little = (int)*(unsigned char *)&one;
+- unsigned char *bytes = (unsigned char *)&value;
+- return _PyLong_FromByteArray(bytes, sizeof(MPI_Fint),
+- little, !is_unsigned);
+- }
+-}
+-
+-/* CIntToPy */
+-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Count(MPI_Count value) {
+- const MPI_Count neg_one = (MPI_Count) ((MPI_Count) 0 - (MPI_Count) 1), const_zero = (MPI_Count) 0;
+- const int is_unsigned = neg_one > const_zero;
+- if (is_unsigned) {
+- if (sizeof(MPI_Count) < sizeof(long)) {
+- return PyInt_FromLong((long) value);
+- } else if (sizeof(MPI_Count) <= sizeof(unsigned long)) {
+- return PyLong_FromUnsignedLong((unsigned long) value);
+-#ifdef HAVE_LONG_LONG
+- } else if (sizeof(MPI_Count) <= sizeof(unsigned PY_LONG_LONG)) {
+- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
+-#endif
+- }
+- } else {
+- if (sizeof(MPI_Count) <= sizeof(long)) {
+- return PyInt_FromLong((long) value);
+-#ifdef HAVE_LONG_LONG
+- } else if (sizeof(MPI_Count) <= sizeof(PY_LONG_LONG)) {
+- return PyLong_FromLongLong((PY_LONG_LONG) value);
+-#endif
+- }
+- }
+- {
+- int one = 1; int little = (int)*(unsigned char *)&one;
+- unsigned char *bytes = (unsigned char *)&value;
+- return _PyLong_FromByteArray(bytes, sizeof(MPI_Count),
+- little, !is_unsigned);
+- }
+-}
+-
+ /* CIntFromPy */
+ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
+- const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wconversion"
++#endif
++ const int neg_one = (int) -1, const_zero = (int) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic pop
++#endif
+ const int is_unsigned = neg_one > const_zero;
+ #if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_Check(x))) {
+@@ -180597,7 +180703,7 @@
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+ #if CYTHON_USE_PYLONG_INTERNALS
+- const digit* digits = ((PyLongObject*)x)->ob_digit;
++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (int) 0;
+ case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
+@@ -180652,7 +180758,7 @@
+ }
+ } else {
+ #if CYTHON_USE_PYLONG_INTERNALS
+- const digit* digits = ((PyLongObject*)x)->ob_digit;
++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (int) 0;
+ case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
+@@ -180766,9 +180872,92 @@
+ return (int) -1;
+ }
+
++/* CIntToPy */
++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Aint(MPI_Aint value) {
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wconversion"
++#endif
++ const MPI_Aint neg_one = (MPI_Aint) -1, const_zero = (MPI_Aint) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic pop
++#endif
++ const int is_unsigned = neg_one > const_zero;
++ if (is_unsigned) {
++ if (sizeof(MPI_Aint) < sizeof(long)) {
++ return PyInt_FromLong((long) value);
++ } else if (sizeof(MPI_Aint) <= sizeof(unsigned long)) {
++ return PyLong_FromUnsignedLong((unsigned long) value);
++#ifdef HAVE_LONG_LONG
++ } else if (sizeof(MPI_Aint) <= sizeof(unsigned PY_LONG_LONG)) {
++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
++#endif
++ }
++ } else {
++ if (sizeof(MPI_Aint) <= sizeof(long)) {
++ return PyInt_FromLong((long) value);
++#ifdef HAVE_LONG_LONG
++ } else if (sizeof(MPI_Aint) <= sizeof(PY_LONG_LONG)) {
++ return PyLong_FromLongLong((PY_LONG_LONG) value);
++#endif
++ }
++ }
++ {
++ int one = 1; int little = (int)*(unsigned char *)&one;
++ unsigned char *bytes = (unsigned char *)&value;
++ return _PyLong_FromByteArray(bytes, sizeof(MPI_Aint),
++ little, !is_unsigned);
++ }
++}
++
++/* CIntToPy */
++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wconversion"
++#endif
++ const int neg_one = (int) -1, const_zero = (int) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic pop
++#endif
++ const int is_unsigned = neg_one > const_zero;
++ if (is_unsigned) {
++ if (sizeof(int) < sizeof(long)) {
++ return PyInt_FromLong((long) value);
++ } else if (sizeof(int) <= sizeof(unsigned long)) {
++ return PyLong_FromUnsignedLong((unsigned long) value);
++#ifdef HAVE_LONG_LONG
++ } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
++#endif
++ }
++ } else {
++ if (sizeof(int) <= sizeof(long)) {
++ return PyInt_FromLong((long) value);
++#ifdef HAVE_LONG_LONG
++ } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
++ return PyLong_FromLongLong((PY_LONG_LONG) value);
++#endif
++ }
++ }
++ {
++ int one = 1; int little = (int)*(unsigned char *)&one;
++ unsigned char *bytes = (unsigned char *)&value;
++ return _PyLong_FromByteArray(bytes, sizeof(int),
++ little, !is_unsigned);
++ }
++}
++
+ /* CIntFromPy */
+ static CYTHON_INLINE MPI_Aint __Pyx_PyInt_As_MPI_Aint(PyObject *x) {
+- const MPI_Aint neg_one = (MPI_Aint) ((MPI_Aint) 0 - (MPI_Aint) 1), const_zero = (MPI_Aint) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wconversion"
++#endif
++ const MPI_Aint neg_one = (MPI_Aint) -1, const_zero = (MPI_Aint) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic pop
++#endif
+ const int is_unsigned = neg_one > const_zero;
+ #if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_Check(x))) {
+@@ -180786,7 +180975,7 @@
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+ #if CYTHON_USE_PYLONG_INTERNALS
+- const digit* digits = ((PyLongObject*)x)->ob_digit;
++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (MPI_Aint) 0;
+ case 1: __PYX_VERIFY_RETURN_INT(MPI_Aint, digit, digits[0])
+@@ -180841,7 +181030,7 @@
+ }
+ } else {
+ #if CYTHON_USE_PYLONG_INTERNALS
+- const digit* digits = ((PyLongObject*)x)->ob_digit;
++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (MPI_Aint) 0;
+ case -1: __PYX_VERIFY_RETURN_INT(MPI_Aint, sdigit, (sdigit) (-(sdigit)digits[0]))
+@@ -180957,7 +181146,14 @@
+
+ /* CIntFromPy */
+ static CYTHON_INLINE MPI_Count __Pyx_PyInt_As_MPI_Count(PyObject *x) {
+- const MPI_Count neg_one = (MPI_Count) ((MPI_Count) 0 - (MPI_Count) 1), const_zero = (MPI_Count) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wconversion"
++#endif
++ const MPI_Count neg_one = (MPI_Count) -1, const_zero = (MPI_Count) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic pop
++#endif
+ const int is_unsigned = neg_one > const_zero;
+ #if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_Check(x))) {
+@@ -180975,7 +181171,7 @@
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+ #if CYTHON_USE_PYLONG_INTERNALS
+- const digit* digits = ((PyLongObject*)x)->ob_digit;
++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (MPI_Count) 0;
+ case 1: __PYX_VERIFY_RETURN_INT(MPI_Count, digit, digits[0])
+@@ -181030,7 +181226,7 @@
+ }
+ } else {
+ #if CYTHON_USE_PYLONG_INTERNALS
+- const digit* digits = ((PyLongObject*)x)->ob_digit;
++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (MPI_Count) 0;
+ case -1: __PYX_VERIFY_RETURN_INT(MPI_Count, sdigit, (sdigit) (-(sdigit)digits[0]))
+@@ -181146,7 +181342,14 @@
+
+ /* CIntFromPy */
+ static CYTHON_INLINE MPI_Offset __Pyx_PyInt_As_MPI_Offset(PyObject *x) {
+- const MPI_Offset neg_one = (MPI_Offset) ((MPI_Offset) 0 - (MPI_Offset) 1), const_zero = (MPI_Offset) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wconversion"
++#endif
++ const MPI_Offset neg_one = (MPI_Offset) -1, const_zero = (MPI_Offset) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic pop
++#endif
+ const int is_unsigned = neg_one > const_zero;
+ #if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_Check(x))) {
+@@ -181164,7 +181367,7 @@
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+ #if CYTHON_USE_PYLONG_INTERNALS
+- const digit* digits = ((PyLongObject*)x)->ob_digit;
++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (MPI_Offset) 0;
+ case 1: __PYX_VERIFY_RETURN_INT(MPI_Offset, digit, digits[0])
+@@ -181219,7 +181422,7 @@
+ }
+ } else {
+ #if CYTHON_USE_PYLONG_INTERNALS
+- const digit* digits = ((PyLongObject*)x)->ob_digit;
++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (MPI_Offset) 0;
+ case -1: __PYX_VERIFY_RETURN_INT(MPI_Offset, sdigit, (sdigit) (-(sdigit)digits[0]))
+@@ -181333,9 +181536,54 @@
+ return (MPI_Offset) -1;
+ }
+
++/* CIntToPy */
++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wconversion"
++#endif
++ const long neg_one = (long) -1, const_zero = (long) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic pop
++#endif
++ const int is_unsigned = neg_one > const_zero;
++ if (is_unsigned) {
++ if (sizeof(long) < sizeof(long)) {
++ return PyInt_FromLong((long) value);
++ } else if (sizeof(long) <= sizeof(unsigned long)) {
++ return PyLong_FromUnsignedLong((unsigned long) value);
++#ifdef HAVE_LONG_LONG
++ } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
++#endif
++ }
++ } else {
++ if (sizeof(long) <= sizeof(long)) {
++ return PyInt_FromLong((long) value);
++#ifdef HAVE_LONG_LONG
++ } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
++ return PyLong_FromLongLong((PY_LONG_LONG) value);
++#endif
++ }
++ }
++ {
++ int one = 1; int little = (int)*(unsigned char *)&one;
++ unsigned char *bytes = (unsigned char *)&value;
++ return _PyLong_FromByteArray(bytes, sizeof(long),
++ little, !is_unsigned);
++ }
++}
++
+ /* CIntFromPy */
+ static CYTHON_INLINE unsigned char __Pyx_PyInt_As_unsigned_char(PyObject *x) {
+- const unsigned char neg_one = (unsigned char) ((unsigned char) 0 - (unsigned char) 1), const_zero = (unsigned char) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wconversion"
++#endif
++ const unsigned char neg_one = (unsigned char) -1, const_zero = (unsigned char) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic pop
++#endif
+ const int is_unsigned = neg_one > const_zero;
+ #if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_Check(x))) {
+@@ -181353,7 +181601,7 @@
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+ #if CYTHON_USE_PYLONG_INTERNALS
+- const digit* digits = ((PyLongObject*)x)->ob_digit;
++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (unsigned char) 0;
+ case 1: __PYX_VERIFY_RETURN_INT(unsigned char, digit, digits[0])
+@@ -181408,7 +181656,7 @@
+ }
+ } else {
+ #if CYTHON_USE_PYLONG_INTERNALS
+- const digit* digits = ((PyLongObject*)x)->ob_digit;
++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (unsigned char) 0;
+ case -1: __PYX_VERIFY_RETURN_INT(unsigned char, sdigit, (sdigit) (-(sdigit)digits[0]))
+@@ -181522,9 +181770,92 @@
+ return (unsigned char) -1;
+ }
+
++/* CIntToPy */
++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Offset(MPI_Offset value) {
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wconversion"
++#endif
++ const MPI_Offset neg_one = (MPI_Offset) -1, const_zero = (MPI_Offset) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic pop
++#endif
++ const int is_unsigned = neg_one > const_zero;
++ if (is_unsigned) {
++ if (sizeof(MPI_Offset) < sizeof(long)) {
++ return PyInt_FromLong((long) value);
++ } else if (sizeof(MPI_Offset) <= sizeof(unsigned long)) {
++ return PyLong_FromUnsignedLong((unsigned long) value);
++#ifdef HAVE_LONG_LONG
++ } else if (sizeof(MPI_Offset) <= sizeof(unsigned PY_LONG_LONG)) {
++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
++#endif
++ }
++ } else {
++ if (sizeof(MPI_Offset) <= sizeof(long)) {
++ return PyInt_FromLong((long) value);
++#ifdef HAVE_LONG_LONG
++ } else if (sizeof(MPI_Offset) <= sizeof(PY_LONG_LONG)) {
++ return PyLong_FromLongLong((PY_LONG_LONG) value);
++#endif
++ }
++ }
++ {
++ int one = 1; int little = (int)*(unsigned char *)&one;
++ unsigned char *bytes = (unsigned char *)&value;
++ return _PyLong_FromByteArray(bytes, sizeof(MPI_Offset),
++ little, !is_unsigned);
++ }
++}
++
++/* CIntToPy */
++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Fint(MPI_Fint value) {
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wconversion"
++#endif
++ const MPI_Fint neg_one = (MPI_Fint) -1, const_zero = (MPI_Fint) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic pop
++#endif
++ const int is_unsigned = neg_one > const_zero;
++ if (is_unsigned) {
++ if (sizeof(MPI_Fint) < sizeof(long)) {
++ return PyInt_FromLong((long) value);
++ } else if (sizeof(MPI_Fint) <= sizeof(unsigned long)) {
++ return PyLong_FromUnsignedLong((unsigned long) value);
++#ifdef HAVE_LONG_LONG
++ } else if (sizeof(MPI_Fint) <= sizeof(unsigned PY_LONG_LONG)) {
++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
++#endif
++ }
++ } else {
++ if (sizeof(MPI_Fint) <= sizeof(long)) {
++ return PyInt_FromLong((long) value);
++#ifdef HAVE_LONG_LONG
++ } else if (sizeof(MPI_Fint) <= sizeof(PY_LONG_LONG)) {
++ return PyLong_FromLongLong((PY_LONG_LONG) value);
++#endif
++ }
++ }
++ {
++ int one = 1; int little = (int)*(unsigned char *)&one;
++ unsigned char *bytes = (unsigned char *)&value;
++ return _PyLong_FromByteArray(bytes, sizeof(MPI_Fint),
++ little, !is_unsigned);
++ }
++}
++
+ /* CIntFromPy */
+ static CYTHON_INLINE MPI_Fint __Pyx_PyInt_As_MPI_Fint(PyObject *x) {
+- const MPI_Fint neg_one = (MPI_Fint) ((MPI_Fint) 0 - (MPI_Fint) 1), const_zero = (MPI_Fint) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wconversion"
++#endif
++ const MPI_Fint neg_one = (MPI_Fint) -1, const_zero = (MPI_Fint) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic pop
++#endif
+ const int is_unsigned = neg_one > const_zero;
+ #if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_Check(x))) {
+@@ -181542,7 +181873,7 @@
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+ #if CYTHON_USE_PYLONG_INTERNALS
+- const digit* digits = ((PyLongObject*)x)->ob_digit;
++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (MPI_Fint) 0;
+ case 1: __PYX_VERIFY_RETURN_INT(MPI_Fint, digit, digits[0])
+@@ -181597,7 +181928,7 @@
+ }
+ } else {
+ #if CYTHON_USE_PYLONG_INTERNALS
+- const digit* digits = ((PyLongObject*)x)->ob_digit;
++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (MPI_Fint) 0;
+ case -1: __PYX_VERIFY_RETURN_INT(MPI_Fint, sdigit, (sdigit) (-(sdigit)digits[0]))
+@@ -181711,9 +182042,54 @@
+ return (MPI_Fint) -1;
+ }
+
++/* CIntToPy */
++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Count(MPI_Count value) {
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wconversion"
++#endif
++ const MPI_Count neg_one = (MPI_Count) -1, const_zero = (MPI_Count) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic pop
++#endif
++ const int is_unsigned = neg_one > const_zero;
++ if (is_unsigned) {
++ if (sizeof(MPI_Count) < sizeof(long)) {
++ return PyInt_FromLong((long) value);
++ } else if (sizeof(MPI_Count) <= sizeof(unsigned long)) {
++ return PyLong_FromUnsignedLong((unsigned long) value);
++#ifdef HAVE_LONG_LONG
++ } else if (sizeof(MPI_Count) <= sizeof(unsigned PY_LONG_LONG)) {
++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
++#endif
++ }
++ } else {
++ if (sizeof(MPI_Count) <= sizeof(long)) {
++ return PyInt_FromLong((long) value);
++#ifdef HAVE_LONG_LONG
++ } else if (sizeof(MPI_Count) <= sizeof(PY_LONG_LONG)) {
++ return PyLong_FromLongLong((PY_LONG_LONG) value);
++#endif
++ }
++ }
++ {
++ int one = 1; int little = (int)*(unsigned char *)&one;
++ unsigned char *bytes = (unsigned char *)&value;
++ return _PyLong_FromByteArray(bytes, sizeof(MPI_Count),
++ little, !is_unsigned);
++ }
++}
++
+ /* CIntFromPy */
+ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
+- const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wconversion"
++#endif
++ const long neg_one = (long) -1, const_zero = (long) 0;
++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
++#pragma GCC diagnostic pop
++#endif
+ const int is_unsigned = neg_one > const_zero;
+ #if PY_MAJOR_VERSION < 3
+ if (likely(PyInt_Check(x))) {
+@@ -181731,7 +182107,7 @@
+ if (likely(PyLong_Check(x))) {
+ if (is_unsigned) {
+ #if CYTHON_USE_PYLONG_INTERNALS
+- const digit* digits = ((PyLongObject*)x)->ob_digit;
++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (long) 0;
+ case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
+@@ -181786,7 +182162,7 @@
+ }
+ } else {
+ #if CYTHON_USE_PYLONG_INTERNALS
+- const digit* digits = ((PyLongObject*)x)->ob_digit;
++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit;
+ switch (Py_SIZE(x)) {
+ case 0: return (long) 0;
+ case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
+@@ -182002,11 +182378,33 @@
+
+ /* CheckBinaryVersion */
+ static int __Pyx_check_binary_version(void) {
+- char ctversion[4], rtversion[4];
+- PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+- PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+- if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
++ char ctversion[5];
++ int same=1, i, found_dot;
++ const char* rt_from_call = Py_GetVersion();
++ PyOS_snprintf(ctversion, 5, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
++ found_dot = 0;
++ for (i = 0; i < 4; i++) {
++ if (!ctversion[i]) {
++ same = (rt_from_call[i] < '0' || rt_from_call[i] > '9');
++ break;
++ }
++ if (rt_from_call[i] != ctversion[i]) {
++ same = 0;
++ break;
++ }
++ }
++ if (!same) {
++ char rtversion[5] = {'\0'};
+ char message[200];
++ for (i=0; i<4; ++i) {
++ if (rt_from_call[i] == '.') {
++ if (found_dot) break;
++ found_dot = 1;
++ } else if (rt_from_call[i] < '0' || rt_from_call[i] > '9') {
++ break;
++ }
++ rtversion[i] = rt_from_call[i];
++ }
+ PyOS_snprintf(message, sizeof(message),
+ "compiletime version %s of module '%.100s' "
+ "does not match runtime version %s",
+@@ -182252,7 +182650,7 @@
+ #endif
+ if (likely(PyLong_CheckExact(b))) {
+ #if CYTHON_USE_PYLONG_INTERNALS
+- const digit* digits = ((PyLongObject*)b)->ob_digit;
++ const digit* digits = ((PyLongObject*)b)->long_value.ob_digit;
+ const Py_ssize_t size = Py_SIZE(b);
+ if (likely(__Pyx_sst_abs(size) <= 1)) {
+ ival = likely(size) ? digits[0] : 0;
+@@ -182301,6 +182699,23 @@
+ Py_DECREF(x);
+ return ival;
+ }
++static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
++ if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
++ return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
++#if PY_MAJOR_VERSION < 3
++ } else if (likely(PyInt_CheckExact(o))) {
++ return PyInt_AS_LONG(o);
++#endif
++ } else {
++ Py_ssize_t ival;
++ PyObject *x;
++ x = PyNumber_Index(o);
++ if (!x) return -1;
++ ival = PyInt_AsLong(x);
++ Py_DECREF(x);
++ return ival;
++ }
++}
+ static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
+ return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
+ }
"libXpm-devel", "libXft-devel", "sqlite-devel", "libcurl-devel", "libXt-devel", "libXcursor-devel", "tbb-devel"]
apt : ["libbsd0", "libbz2-1.0", "libc6", "libdrm2", "libegl1", "libexif12", "libexpat1",
"libfftw3-double3", "libfontconfig1", "libgl1", "libglu1-mesa", "libgomp1", "libgphoto2-6", "libice6",
- "libjbig0", "libltdl7", "liblzma5", "libncurses5", "libnuma1", "libpcre3", "libquadmath0",
+ "libjbig0", "libltdl7", "liblzma5", "libnuma1", "libpcre3", "libquadmath0",
"libraw1394-11", "libsm6", "libstdc++6", "libtiff5", "libudev1", "libusb-1.0-0", "libuuid1", "libx11-6",
"libx11-xcb1", "libxau6", "libxcb1", "libxcb-glx0", "libxcb-xfixes0", "libxcb-xkb1", "libxdmcp6",
"libxext6", "libxft2", "libxi6", "libxkbcommon0", "libxkbcommon-x11-0", "libxmu6", "libxpm4", "libxrender1",
# specific to some platform(s)
"CO7" :
{
- rpm : ["lz4", "gsl", "libgeotiff", "giflib", "geos", "fftw", "postgresql-libs", "pcllib", "libxml++"]
- rpm_dev : ["perl", "gsl-devel", "libpng-devel", "libtiff-devel", "libgeotiff-devel", "giflib-devel", "geos-devel", "fftw-devel", "devtoolset-8-gcc", "texlive-dvipng", "libxml++-devel"]
+ rpm : ["lz4", "gsl", "libgeotiff", "giflib", "geos", "fftw", "postgresql-libs", "pcllib", "libxml++", "freetype"]
+ rpm_dev : ["perl", "gsl-devel", "libpng-devel", "libtiff-devel", "libgeotiff-devel", "giflib-devel", "geos-devel", "fftw-devel", "devtoolset-8-gcc", "texlive-dvipng", "libxml++-devel", "freetype-devel"]
}
"CO8" :
{
- rpm : ["lz4", "openmpi", "gsl", "libgeotiff", "giflib", "geos", "sqlite", "netcdf", "libxml++"]
+ rpm : ["lz4", "openmpi", "gsl", "libgeotiff", "giflib", "geos", "sqlite", "netcdf", "libxml++", "freetype"]
rpm_dev : ["perl-interpreter", "qt5-devel", "openmpi-devel", "gsl-devel", "libpng-devel", "libtiff-devel", "libgeotiff-devel", "giflib-devel", "geos-devel", "netcdf-devel", "texlive-dvipng",
"libxml++-devel", "xcb-util-cursor-devel", "xcb-util-image-devel", "xcb-util-keysyms-devel", "xcb-util-renderutil-devel", "xcb-util-wm-devel",
- "libXrender-devel", "libxkbcommon-devel", "libxkbcommon-x11-devel", "libXi-devel", "libXcursor-devel", "libXcomposite-devel"] # libdrm-devel xcb-util-xrm-devel
+ "libXrender-devel", "libxkbcommon-devel", "libxkbcommon-x11-devel", "libXi-devel", "libXcursor-devel", "libXcomposite-devel", "freetype-devel"] # libdrm-devel xcb-util-xrm-devel
}
"FD30" :
{
}
"FD32" :
{
- rpm : ["lz4", "gsl", "openmpi", "netcdf", "python3-netcdf4", "gdal", "libxml++"]
- rpm_dev : ["perl-interpreter", "qt5-devel", "gsl-devel", "openmpi-devel", "netcdf-devel", "protobuf-devel", "python3-protobuf", "texlive-dvipng", "libxml++-devel"]
+ rpm : ["lz4", "gsl", "openmpi", "netcdf", "python3-netcdf4", "gdal", "libxml++", "freetype"]
+ rpm_dev : ["perl-interpreter", "qt5-devel", "gsl-devel", "openmpi-devel", "netcdf-devel", "protobuf-devel", "python3-protobuf", "texlive-dvipng", "libxml++-devel", "freetype-devel"]
}
"FD34" :
{
- rpm : ["lz4-libs", "gsl", "openmpi", "netcdf", "gdal", "libxml++"]
- rpm_dev : ["lz4-devel", "qt5-qtbase-devel", "gsl-devel", "openmpi-devel", "netcdf-devel", "gdal-devel", "texlive-dvipng", "libxml++-devel"]
+ rpm : ["lz4-libs", "gsl", "openmpi", "netcdf", "gdal", "libxml++", "freetype"]
+ rpm_dev : ["lz4-devel", "qt5-qtbase-devel", "gsl-devel", "openmpi-devel", "netcdf-devel", "gdal-devel", "texlive-dvipng", "libxml++-devel", "freetype-devel"]
}
"FD36" :
{
- rpm : ["lz4-libs", "gsl", "openmpi", "netcdf", "gdal", "libxml++"]
- rpm_dev : ["lz4-devel", "qt5-qtbase-devel", "gsl-devel", "openmpi-devel", "netcdf-devel", "gdal-devel", "libxml++-devel"]
+ rpm : ["lz4-libs", "gsl", "openmpi", "netcdf", "gdal", "libxml++", "freetype"]
+ rpm_dev : ["lz4-devel", "qt5-qtbase-devel", "gsl-devel", "openmpi-devel", "netcdf-devel", "gdal-devel", "libxml++-devel", "freetype-devel"]
}
"FD38" :
{
- rpm : ["lz4-libs", "gsl", "openmpi", "netcdf", "gdal", "libxml++"]
- rpm_dev : ["lz4-devel", "qt5-qtbase-devel", "gsl-devel", "openmpi-devel", "netcdf-devel", "gdal-devel", "libxml++-devel"]
+ rpm : ["lz4-libs", "gsl", "openmpi", "netcdf", "gdal", "libxml++", "freetype"]
+ rpm_dev : ["lz4-devel", "qt5-qtbase-devel", "gsl-devel", "openmpi-devel", "netcdf-devel", "gdal-devel", "libxml++-devel", "freetype-devel"]
}
"DB08" :
{
"DB09" :
{
apt : ["libdc1394-22", "libopenexr22", "libwebp6", "libgfortran3", "libilmbase12", "libevent-2.0-5", "libpng16-16", "libgcc-6-dev",
- "libffi6", "libtinfo5", "libgphoto2-port12", "libglx0", "libopengl0", "libjsoncpp1", "libtbb2"]
+ "libffi6", "libtinfo5", "libgphoto2-port12", "libglx0", "libopengl0", "libjsoncpp1", "libtbb2", "libfreetype6", "libncurses5"]
apt_dev : ["libtbb-dev", "libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "texlive-latex-base", "texlive-latex-extra", "dvipng",
"libxcb1-dev", "libxcb-composite0-dev", "libxcb-cursor-dev", "libxcb-damage0-dev", "libxcb-dpms0-dev", "libxcb-dri2-0-dev", "libxcb-dri3-dev",
"libxcb-glx0-dev", "libxcb-screensaver0-dev", "libxcb-util0-dev", "libxcb-present-dev", "libxcb-randr0-dev", "libxcb-record0-dev", "libxcb-render0-dev",
"libxcb-res0-dev", "libxcb-shape0-dev", "libxcb-shm0-dev", "libxcb-sync-dev", "libxcb-xf86dri0-dev", "libxcb-xfixes0-dev", "libxcb-xinerama0-dev",
"libxcb-xkb-dev", "libxcb-xtest0-dev", "libxcb-xv0-dev", "libxcb-xvmc0-dev", "libxcb-image0-dev", "libxcb-keysyms1-dev", "libxcb-render-util0-dev",
- "libxcb-ewmh-dev", "libxcb-icccm4-dev", "libxcb-xrm-dev"]
+ "libxcb-ewmh-dev", "libxcb-icccm4-dev", "libxcb-xrm-dev", "libfreetype6-dev"]
}
"DB10" :
{
apt : ["libdc1394-22", "libopenexr23", "libwebp6", "libgfortran5", "libilmbase23", "libevent-2.1-6", "libpng16-16", "libgcc-8-dev",
"libffi6", "libtinfo6", "libgphoto2-port12", "libglx0", "libopengl0", "libzstd1", "libglvnd0", "libjsoncpp1", "libopenblas-base", "libscotch-6.0", "openmpi-bin",
- "libnetcdf13", "libgdal20", "libtbb2", "libxml++2.6-2v5"]
+ "libnetcdf13", "libgdal20", "libtbb2", "libxml++2.6-2v5", "libfreetype6", "libncurses5"]
apt_dev : ["libtbb-dev", "cython3", "libfftw3-dev", "libopenblas-dev",
"qttools5-dev", "libqt5svg5-dev", "libqt5x11extras5-dev", "qtxmlpatterns5-dev-tools", "libopenmpi-dev",
"libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "libnetcdf-dev", "libgdal-dev",
"libxcb-shape0-dev", "libxcb-shm0-dev", "libxcb-sync-dev", "libxcb-xf86dri0-dev", "libxcb-xfixes0-dev",
"libxcb-xinerama0-dev", "libxcb-xinput-dev", "libxcb-xkb-dev", "libxcb-xtest0-dev", "libxcb-xv0-dev", "libxcb-xvmc0-dev",
"libxcb-imdkit-dev", "libxcb-image0-dev", "libxcb-keysyms1-dev", "libxcb-render-util0-dev", "libxcb-ewmh-dev",
- "libxcb-icccm4-dev", "libxcb-xrm-dev"]
+ "libxcb-icccm4-dev", "libxcb-xrm-dev", "libfreetype6-dev"]
}
"DB11" :
{
apt : ["libdc1394-25", "libopenexr25", "libwebp6", "libgfortran5", "libilmbase25", "libevent-2.1-7", "libpng16-16", "libgcc-10-dev",
"libffi7", "libtinfo6", "libgphoto2-port12", "libglx0", "libopengl0", "libzstd1", "libglvnd0", "libjsoncpp24",
- "openmpi-bin", "libnetcdf18", "libgdal28", "libtbb2", "pypy-setuptools", "libxml++2.6-2v5"]
+ "openmpi-bin", "libnetcdf18", "libgdal28", "libtbb2", "pypy-setuptools", "libxml++2.6-2v5", "libfreetype6", "libncurses5"]
apt_dev : ["libtbb-dev", "cython3", "libfftw3-dev", "libopenblas-dev",
"qttools5-dev", "libqt5svg5-dev", "libqt5x11extras5-dev", "qtxmlpatterns5-dev-tools", "libopenmpi-dev",
"libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "libnetcdf-dev", "libgdal-dev",
- "texlive-latex-base", "texlive-latex-extra", "dvipng", "libxml++2.6-dev"]
+ "texlive-latex-base", "texlive-latex-extra", "dvipng", "libxml++2.6-dev", "libfreetype6-dev"]
}
"DB12" :
{
apt : ["libdc1394-25", "libopenexr-3-1-30", "libwebp7", "libgfortran5", "libevent-2.1-7", "libpng16-16", "libgcc",
"libffi8", "libtinfo6", "libgphoto2-port12", "libglx0", "libopengl0", "libzstd1", "libglvnd0", "libjsoncpp25",
- "openmpi-bin", "libnetcdf19", "libgdal32", "libtbb12", "python3-setuptools", "libxml++2.6-2v5", "liblzf1"]
+ "openmpi-bin", "libnetcdf19", "libgdal32", "libtbb12", "python3-setuptools", "libxml++2.6-2v5", "liblzf1", "libfreetype6", "libncurses5"]
apt_dev : ["libtbb-dev", "cython3", "libfftw3-dev", "libopenblas-dev",
"qttools5-dev", "libqt5svg5-dev", "libqt5x11extras5-dev", "qtxmlpatterns5-dev-tools", "libopenmpi-dev",
"libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "libnetcdf-dev", "libgdal-dev",
- "texlive-latex-base", "texlive-latex-extra", "dvipng", "libxml++2.6-dev"]
+ "texlive-latex-base", "texlive-latex-extra", "dvipng", "libxml++2.6-dev", "libfreetype6-dev"]
}
"UB16.04" :
{
"UB18.04" :
{
apt : ["libdc1394-22", "libopenexr22", "libwebp6", "libgfortran4", "libilmbase12", "libevent-2.1-6", "libpng16-16", "libgcc-7-dev",
- "libffi6", "libtinfo5", "libgphoto2-port12", "libglx0", "libopengl0", "libzstd1", "libglvnd0", "libopenblas-base", "libgeos-c1v5", "libtbb2", "libxml++2.6"]
+ "libffi6", "libtinfo5", "libgphoto2-port12", "libglx0", "libopengl0", "libzstd1", "libglvnd0", "libopenblas-base", "libgeos-c1v5", "libtbb2", "libxml++2.6", "libfreetype6"]
apt_dev : ["libtbb-dev", "cython3", "libfftw3-dev", "libopenblas-dev",
- "libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "dvipng", "libxml++2.6-dev"]
+ "libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "dvipng", "libxml++2.6-dev", "libfreetype6-dev"]
}
"UB20.04" :
{
apt : ["libdc1394-22", "libopenexr24", "libwebp6", "libgfortran5", "libilmbase24", "libevent-2.1-7", "libpng16-16", "libgcc-9-dev",
"libffi7", "libtinfo6", "libgphoto2-port12", "libglx0", "libopengl0", "libzstd1", "libglvnd0", "openmpi-bin", "libgdal26", "libopenblas0-serial", "libtbb2",
- "libxml++2.6-2v5", "python3-netcdf4"]
+ "libxml++2.6-2v5", "python3-netcdf4", "libfreetype6", "libncurses5"]
apt_dev : ["libtbb-dev", "cython3", "libfftw3-dev", "libopenblas-dev",
"qttools5-dev", "libqt5svg5-dev", "libqt5x11extras5-dev", "qtxmlpatterns5-dev-tools", "libopenmpi-dev",
"libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "libgdal-dev", "dvipng", "libxml++2.6-dev",
"libxcb-shape0-dev", "libxcb-shm0-dev", "libxcb-sync-dev", "libxcb-xf86dri0-dev", "libxcb-xfixes0-dev",
"libxcb-xinerama0-dev", "libxcb-xinput-dev", "libxcb-xkb-dev", "libxcb-xtest0-dev", "libxcb-xv0-dev", "libxcb-xvmc0-dev",
"libxcb-imdkit-dev", "libxcb-image0-dev", "libxcb-keysyms1-dev", "libxcb-render-util0-dev", "libxcb-ewmh-dev",
- "libxcb-icccm4-dev", "libxcb-xrm-dev"]
+ "libxcb-icccm4-dev", "libxcb-xrm-dev", "libfreetype6-dev"]
}
"UB22.04" :
{
apt : ["libdc1394-25", "libopenexr25", "libwebp7", "gfortran-11", "libilmbase25", "libevent-2.1-7", "libpng16-16", "libgcc-11-dev",
"libffi7", "libtinfo6", "libgphoto2-port12", "libglx0", "libopengl0", "libzstd1", "libglvnd0", "openmpi-bin", "libgdal30", "libopenblas0-serial", "libtbb12",
- "libxml++2.6-2v5"]
+ "libxml++2.6-2v5", "libfreetype6", "libncurses5"]
apt_dev : ["libtbb-dev", "cython3", "libfftw3-dev", "libopenblas-dev",
"qttools5-dev", "libqt5svg5-dev", "libqt5x11extras5-dev", "qtxmlpatterns5-dev-tools", "libopenmpi-dev",
- "libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "libgdal-dev", "dvipng", "libxml++2.6-dev"]
+ "libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "libgdal-dev", "dvipng", "libxml++2.6-dev", "libfreetype6-dev"]
+ }
+ "UB24.04" :
+ {
+ apt : ["libdc1394-25", "libopenexr-3-1-30", "libwebp7", "gfortran-13", "libevent-2.1-7", "libpng16-16", "libgcc-13-dev", libncurses6,
+ "libffi8", "libtinfo6", "libgphoto2-port12", "libglx0", "libopengl0", "libzstd1", "libglvnd0", "openmpi-bin", "libgdal34t64", "libopenblas0-serial", "libtbb12",
+ "libxml++2.6-2v5", "libfreetype6", "libncurses6"]
+ apt_dev : ["libtbb-dev", "cython3", "libfftw3-dev", "libopenblas-dev",
+ "qttools5-dev", "libqt5svg5-dev", "libqt5x11extras5-dev", "qtxmlpatterns5-dev-tools", "libopenmpi-dev",
+ "libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "libgdal-dev", "dvipng", "libxml++2.6-dev", "libfreetype-dev"]
}
-
}
depend : []
properties :